【问题标题】:How to combine two lists into a third list?如何将两个列表合并为第三个列表?
【发布时间】:2017-10-03 04:00:04
【问题描述】:

我得到了三个列表:

A=[[9, 'a'], [0, 'c'], [2, 'g'], [7, 'w'], [0, 'Q']]
B=[[0, 'a'], [0, 'c'], [0, 'w'], [0, 'Q'], [3, 'front'], [5, 'Z']]
C=[[9, 'a'], [0, 'c'], [7, 'w'], [0, 'Q']]

我想像这样将 A 和 B 组合成 C:

C=[[9, 'a'], [0, 'c'],[7, 'w'], [0, 'Q'],[2,'g'], [3,'front'],[5,'Z']] 

基本上带有 g 的列表不在 C 中,所以我附加到 C.Same 中以用于列表 B。

编辑:我不需要特定的索引,只需附加到 C 中。输出只是一个示例输出。它可以是任何顺序。

【问题讨论】:

  • “那个”索引?什么索引?
  • 您的意思是一个由 A 和 B 组成的唯一列表吗?
  • 请说明如何确定C中元素的顺序
  • 如果 A 或 B 中的字母不在 C 中,则将带有字母的列表追加到 C 中。列表中的数字无关紧要。
  • 但是这样做不会产生与问题所示相同的输出列表“C”

标签: python list


【解决方案1】:

如果我正确理解了这个问题,听起来您想将 A 和 B 中尚未包含在其中的 C 值添加到 C 中,从而生成一组唯一值? 如果是这样,这就是要走的路:

C = [list(x) for x in set(tuple(x) for x in A+B+C)]

【讨论】:

  • TypeError: unhashable type: 'list'
  • 刚刚编辑修复了这个问题——我刚刚意识到列表是不可散列的。
【解决方案2】:
from itertools import zip_longest
for x,y in zip_longest(enumerate(A),enumerate(B)):
    for i in x,y:
        if i is not None and i[1][1] not in map(lambda i: i[1], C):
            if(i[0] < len(C)):
                C.insert(i[0], i[1])
            else:
                C.append(i[1])
print(C)

为了获得您所概述的位置数据,这种方法似乎有效。它的输出是: [[3, '前'], [5, 'Z'], [7, 'w'], [0, 'Q'], [0, 'c'], [0, 'w'], [ 9, 'a'], [2, 'g'], [0, 'a']]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-12
    • 1970-01-01
    • 1970-01-01
    • 2020-03-10
    • 1970-01-01
    • 2014-01-27
    相关资源
    最近更新 更多