python – 在列表中循环并将项目分配给新列表 – 有线行为
发布时间:2020-12-20 11:09:42 所属栏目:Python 来源:网络整理
导读:我遍历列表列表,当我将项目附加到数组时,它会单独添加每个字母,而不是整个单词,除非我删除'[]’..为什么会发生,只是好奇? 例: 只是好奇知道为什么会出现这种情况 def printTable(lists): for list in lists: s = [] for item in list: s += item print(s)
我遍历列表列表,当我将项目附加到数组时,它会单独添加每个字母,而不是整个单词,除非我删除'[]’..为什么会发生,只是好奇?
例: 只是好奇知道为什么会出现这种情况 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) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |