有人可以解释一下为什么在for循环之后,列表res是= [‘m’]
吗?
string = ‘spam’
for x in string:
res =[]
res.extend(x)
print(res)
我期望输出为res = [‘s’, ‘p’, ‘a’, ‘m’]
您正在替换列表对象循环的每个步骤。语句res = []
创建一个新的空列表对象,然后向该列表添加一个字母。
创建循环的列表外部,一次:
string = 'spam'
res = []
for x in string:
res.extend(x)
您将永远不会获得该输出,因为对于循环的每次迭代,您都设置为res = []
,因此只有最后一次迭代才有效。
固定代码如下:
string = 'spam'
res = []
for x in string:
res.extend(x)
print(res)
[另一个注意事项是,在这种情况下,您可能应该使用.append
。 .extend
用于添加整个可迭代对象的追加,但是由于您一次仅添加一个元素,因此没有必要。检查here以获得良好的解释。
您总是在for循环中重新初始化res
列表,这就是为什么在循环的最后一次迭代中,该列表被初始化为[]
一个空列表并向其添加最后一个字母。] >
string = 'spam' res =[] for x in string: res.extend(x) print(res)
或简单起见:
list('spam')