python - 将零添加到列表中

标签 python list prepend

故事如下。用户输入一个数字。 Python 将字符串转换为 int,并使用算法生成二进制数。例如:

firstdecimal=input("Please enter your first denary number: ")

> 45

StrToInt = int(firstdecimal)
InputInt = ToBin(StrToInt)     # a working binary conversion function
print(InputInt)

> [1, 0, 1, 1, 0, 1]

我需要的是函数 Addzero(x) 能够获取二进制数列表 (InputInt),并添加 0让我们开始吧。如果列表中已经有 8 元素,则不需要添加 0

def Addzero(value):
    reverse = value[::-1] 
    if len(value) != 8:
        value.extend([0])
        if len(value) == 8:
            reverse = value[::-1]
    elif len(value) == 8:
        return

我找不到让我将元素添加到开头的代码,所以我只是实现了一个反向功能来绕过它。

当我打印这个函数的内容时,我得到...

> None

这显然不是预期的结果。我需要输出。 (由 01 组成的完整 8 元素列表)

像这样:

> [0, 0, 1, 0, 1, 1, 0, 1]

最佳答案

它返回 None 的原因仅仅是因为您的 return 语句缺少表达式:

elif len(value) == 8:
    return

因此 return 简单的意思是:“我们完成了,停止执行这个函数,什么都不应该返回”。

此外,并非所有代码路径都会执行 return 语句。最后,您的 AddZero 似乎只添加了一个单个 零,这可能是低效的。

更好的解决方案可能是:

def Addzero(value):
    return [0] * max(0,8-len(value)) + value

此处的表达式 [0]*n 表示您在列表中重复 0 n 次。所以 [0]*4 将导致 [0,0,0,0]。现在我们需要添加的次数是 max(0,8-len(value))max(0,...) 实际上甚至不是必需的,因此您可以将其重写为:

def Addzero(value):
    return [0] * (8-len(value)) + value

这意味着我们必须缩短生成八项列表的元素数被构造为零列表。我们用 + 添加(追加)原始列表。

如@Later42 在 his answer 中所示,您可以通过先执行 len 检查来提高效率,如果它等于 8,则返回列表本身:

def Addzero(value):
    if(len(value) > 8) :
        return value
    else :
        return [0] * (8-len(value)) + value

演示 使用 Python 的交互式 shell:

$ python
Python 2.7.9 (default, Apr  2 2015, 15:33:21) 
[GCC 4.9.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> def Addzero(value):
...     return [0] * (8-len(value)) + value
... 
>>> Addzero([1, 0, 1, 1, 0, 1])
[0, 0, 1, 0, 1, 1, 0, 1]

关于python - 将零添加到列表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34244943/

相关文章:

python - 将模块内的所有函数和类导入到类python中

python - 如何在 Django 中创建人类可读的 URL

c# - WriteLine 类

ruby - 将十六进制字符串添加到二进制文件的内容之前

arrays - 如何将 int 添加到 slice

jquery - 获取新前置元素的属性值

python - 加载不同的模块而不改变逻辑文件

python - 如果未分配给 PySide 中的对象变量,对象似乎被删除

python - 将列表放入字典中

python - 如何在每个列表元素的末尾添加后缀?