加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读