我遍历列表列表,当我将项目附加到数组时,它会单独添加每个字母,而不是整个单词,除非我删除'[]’..为什么会发生,只是好奇?
例:
只是好奇知道为什么会出现这种情况
def printTable(lists):
for list in lists:
s = []
for item in list:
s += item
print(s)
print()
tableData = [['apples', 'oranges', 'cherries', 'banana'],
['Alice', 'Bob', 'Carol', 'David'],
['dogs', 'cats', 'moose', 'goose']]
printTable(tableData)
而不是将每个项目添加到列表中,它添加每个字母(同时删除列表数据类型,它将字母添加为例外)只是好奇为什么会发生这种情况.
最佳答案 欢迎来到Stackoverflow.这是一个非常有趣的问题.
您的外部循环依次为每个子列表设置列表(顺便选择名称,顺便说一下,因为它也是Python内置类型的名称),内部循环将项目设置为内部列表中每个单词的值.
如果你写的
s = s + item
代替
s += item
然后你会看到由于右侧的表达而引发的异常:
>>> [] + "abc"
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can only concatenate list (not "str") to list
然而,=运算符的行为并不完全相同.在this question中有一个有趣的讨论.底线是如果=的右手操作符是可迭代的,则解释器迭代它,将每个项追加到列表中.
如果您只是想将每个项目添加到s列表,则应该使用append方法:
s.append(item)