将值插入列表

时间:2017-12-09 08:21:40

标签: python list while-loop

我试图在列表中插入值,这是while循环的一部分,而不是插入最后一个值替换之前的值,所以列表将始终只有一个值!,我试图添加值不替换它们,这是我的代码:

while X != 1:
    resultList = [];
    #extList = []
    count += 1
    if X % 2:
        X = 3 * X + 1
    elif not X % 2:
        X = X // 2 #important to use double slash to have a integer division
    print(X)
    resultList.insert(count-1, X)
    #print("the resultList is " + str(resultList))

    #extList.extend(resultList)

print("The inputValue "+str(originalValue)+" took "+str(count)+" calculations to reach 1")
print (resultList) 

感谢任何帮助

2 个答案:

答案 0 :(得分:3)

while循环的每次迭代中,您创建resultList列表的新实例。

while X != 1:
    resultList = [];
...

应替换为

resultList = [];
while X != 1:
    ...

要在list的末尾添加新元素,您可以使用append方法。像

resultList = [];
while X != 1:
    if X % 2:
        X = 3 * X + 1
    else:
        X = X // 2 #important to use double slash to have a integer division
    print(X)
    resultList.append(X)

答案 1 :(得分:2)

问题在于:

while X != 1:
    resultList = [];
    #etc

您将在循环的每次迭代中重新创建列表。因此,它最后只有一个值,即最后一次迭代中唯一插入的值。

将分配从循环中取出:

resultList = [];
while X != 1:
    #etc

..解决了这个问题。

另外请注意,您在此处所做的事情是不必要的:

    elif not X % 2:
    X = X // 2

您无需重复并颠倒原始状态。您只需将其设为else

if X % 2:
    X = 3 * X + 1
else:
    X = X // 2