Python:追加方法

问题描述 投票:0回答:2

有人可以解释一下为什么在for循环之后,列表res是= [‘m’]吗?

string = ‘spam’
for x in string:
    res =[]
    res.extend(x)
print(res)

我期望输出为res = [‘s’, ‘p’, ‘a’, ‘m’]

python append
2个回答
1
投票

您正在替换列表对象循环的每个步骤。语句res = []创建一个新的空列表对象,然后向该列表添加一个字母。

创建循环的列表外部一次

string = 'spam'
res = []
for x in string:
    res.extend(x)

0
投票

您将永远不会获得该输出,因为对于循环的每次迭代,您都设置为res = [],因此只有最后一次迭代才有效。

固定代码如下:

string = 'spam'
res = []
for x in string:
    res.extend(x)
print(res)

[另一个注意事项是,在这种情况下,您可能应该使用.append.extend用于添加整个可迭代对象的追加,但是由于您一次仅添加一个元素,因此没有必要。检查here以获得良好的解释。


0
投票

您总是在for循环中重新初始化res列表,这就是为什么在循环的最后一次迭代中,该列表被初始化为[]一个空列表并向其添加最后一个字母。] >

string = 'spam'
res =[]
for x in string:
    res.extend(x)
print(res)

或简单起见:

list('spam')
© www.soinside.com 2019 - 2024. All rights reserved.