【问题标题】:two nested list make one list两个嵌套列表组成一个列表
【发布时间】:2023-01-09 00:07:05
【问题描述】:

以下是 2 个列表

list1 = [[1,2],[3,4]]
list2 = [[11,22],[33,44]]

我试过这个

output =list(tuple(zip(i, j)) for i, j in zip(list1, list2))

但是我的输出不符合预期。

[((1, 11), (2, 22)), ((3, 33), (4, 44))]

我要一一对应比如输出像

[(1,11),(2,22),(3,33),(4,44)] 

我怎样才能解决这个问题?

【问题讨论】:

    标签: python list zip list-comprehension


    【解决方案1】:

    您的原始代码生成元组的元组列表,因为您有一个外部 list()、一个 tuple() 和一个生成实际元组的 zip()——您想要摆脱中间的那个 tuple(),而是只需要一个列表推导式即可捕获zip(i, j) 生成的所有元组。

    您可以通过在理解中放置两个 for 语句来做到这一点(不要将任何一个包装在 tuple() 调用中):

    >>> list1 = [[1,2],[3,4]]
    >>> list2 = [[11,22],[33,44]]
    >>> [z for i, j in zip(list1, list2) for z in zip(i, j)]
    [(1, 11), (2, 22), (3, 33), (4, 44)]
    

    【讨论】:

      【解决方案2】:

      #python 求两个嵌套列表交集的程序 导入 itertools 导入函数工具

      def GCI(lst1,lst2):

      temp1 = functools.reduce(lambda a, b: set(a).union(set(b)), lst1)
      temp2 = functools.reduce(lambda a, b: set(a).union(set(b)), lst2)
       
      lst3 = [list(set(a).intersection(set(b)))
             for a, b in itertools.product(lst1, lst2)
             if len(set(a).intersection(set(b))) != 0]
       
      lst3.extend([x] for x in temp1.symmetric_difference(temp2))
       
      return lst3
      

      希望能帮助到你.....

      【讨论】:

        【解决方案3】:

        您也可以使用一个 for 循环来执行此操作:

        k=[]
        for x,y in enumerate(list1):
            k.append(tuple(zip(y,list2[x]))[0])
            k.append(tuple(zip(y,list2[x]))[1])
        
        #k
        [(1, 11), (2, 22), (3, 33), (4, 44)]
        

        【讨论】:

          猜你喜欢
          • 2018-11-17
          • 2015-04-29
          • 2020-06-01
          • 1970-01-01
          • 2013-04-05
          • 1970-01-01
          • 1970-01-01
          • 2019-11-28
          • 2011-07-31
          相关资源
          最近更新 更多