【问题标题】:Unflattening list returns unexpected Error in Python展开列表在 Python 中返回意外错误
【发布时间】:2019-05-19 00:09:38
【问题描述】:

我已阅读 Stackoverflow 上所有关于展开列表的帖子,但我找不到解决问题的方法。

我有两个列表,我想将 list2 中的一个元素添加到 list1 中的每个元素。

l1 = [[1,2],[3,4]]
l2 = [5, 7]

我追求的结果是

[[1, 2, 5], [3, 4, 6]]

我试过这个代码

for i in range(len(l2)):
    l1[i].extend(l2[i])

print(l1)

但返回错误“TypeError: 'int' object is not iterable”

当 l2 的每个元素本身都是一个列表时,例如l2 = [[5],[7]] 我的代码工作正常。这是为什么?当 l2 采用这种格式l2 = [5, 7]

时,如何调整我的代码工作

【问题讨论】:

    标签: python-3.x list


    【解决方案1】:

    使用zip() 并行迭代两个或多个事物。在不需要时使用range() 来创建索引是不符合Python 的。

    xss = [[1,2],[3,4]]
    ys = [5,7]
    
    for xs, y in zip(xss, ys):
        xs.append(y)
    
    print(xss)
    

    [[1, 2, 5], [3, 4, 7]]
    

    【讨论】:

      【解决方案2】:

      list1.extend(list2) 是创建list1+list2。但是你没有提供list2,它只是一个元素。执行此操作的正确函数是list1.append(element2),与list1+[element2] 相同

      【讨论】:

        【解决方案3】:
        l1 = [[1,2],[3,4]]
        l2 = [5, 7]
        for i in range(len(l2)):
        l1[i].append(l2[i]);
        
        print(l1)
        

        [[1, 2, 5], [3, 4, 7]]

        Extend is for objects.
        Append is what you need here.
        

        【讨论】:

        • 可能是因为您提供的代码没有解释其含义、工作原理或回答问题的方式。这不是 SO 的意义所在。 stackoverflow.com/help/how-to-answer您的“答案”已被审核删除。
        • 不鼓励仅使用代码的答案。请添加一些解释,说明这是如何解决问题的,或者这与现有答案有何不同。 From Review
        • 非常小的 .extend 到 .append 修复。由于 extend 使用对象和 append 是他想要的。
        猜你喜欢
        • 2016-08-10
        • 2022-11-21
        • 2013-11-29
        • 2015-05-09
        • 2019-09-23
        • 2015-08-23
        • 2019-09-10
        • 1970-01-01
        • 2018-12-28
        相关资源
        最近更新 更多