动态更新python中For语句中使用的变量

时间:2016-06-17 05:22:47

标签: python for-loop

我想更新for循环语句中使用的列表,因为它在循环中附加了新值。我知道这段代码不会更新列表,但我无法找到这样做的方法。我希望所需的输出可能会更好地解释它

INPUT

list=[1,2,3]
count=0
for x in list:
    if int(len(list))>10:
        break
    else:
        count=count+1
        x=x+10
        if x>3:
            list=list+[x]

print "list = %r" %list
print "count = %r" %count

输出

list = [1, 2, 3, 11, 12, 13]
count = 3

必需的输出

list = [1, 2, 3, 11, 12, 13, 21, 22, 23, 31]
count = 10

2 个答案:

答案 0 :(得分:0)

我建议您使用while循环而不是for,这样可以节省break关键字的需要:

l=[1,2,3]
count = len(l) # There are already len(l) elements in the list
pos = 0

while len(l) < 10:

    count += 1

    x = l[pos]

    l.append(x+10)

    pos += 1

print "list = %r" %l
print "count = %r" %count

给出了输出:

list = [1, 2, 3, 11, 12, 13, 21, 22, 23, 31]
count = 10

另外,您可以注意到我将list变量重命名为l,以防止类型list与变量本身之间出现混淆。

我使用append在列表末尾添加元素。

希望它会有所帮助。

答案 1 :(得分:0)

这里有两个问题:

首先:if x>3:测试。 (你为什么要包括那个?)

当你有一个for语句时,它会循环显示最初出现的值。

这应该有效:

l = [1,2,3]
count = 0
while len(l) < 10:
    l.append(l[count]+10)
    count += 1