首页 > 解决方案 > 在列表中循环并将项目分配给新列表 - 有线行为

问题描述

我遍历列表列表,当我将项目附加到数组时,它单独添加每个字母而不是整个单词,除非我删除'[]'..为什么会发生,只是好奇?例子:

只是想知道为什么会发生这种行为

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)

它不是将每个项目添加到列表中,而是添加每个字母(同时删除列表数据类型,它按字母添加它们作为例外)只是好奇为什么会发生这种情况。

标签: pythonlistfor-loop

解决方案


而不是s += item试试这个:

s.append(item)

当你s += item说它等同于s = s + item, 并且肯定s是 list 并且item是一个字符串时,并且在 python 中字符串是可迭代的,所以这就是它看起来像这样的原因。

看下面的例子:

a = 'hi'
print(list(a))
['h', 'i']

正如@roganjosh 在评论中所说:

注意list作为变量名使用不好,list是python内置的。


推荐阅读