【问题标题】:accessing all sub elements in list of list for every iteration [duplicate]为每次迭代访问列表列表中的所有子元素[重复]
【发布时间】:2023-04-07 01:46:02
【问题描述】:

我有列表列表,我想遍历列表,并且对于每次迭代我想访问列表的 ith 子元素。

例如:

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

我想做这样的事情

   for i in range(len(a)):
        x=a[i]

对于第一次迭代,我想从所有子列表中访问 0th 元素(即)1,2,3

对于第二次迭代,我想从所有子列表中访问 1st 元素(即)3,4,7

我尝试了几种方法但都失败了,有什么技巧可以做到这一点

【问题讨论】:

  • 您的预期输出是什么? 123347?
  • 预期的输出是我想遍历列表,并且对于每次迭代我想访问子列表的第 i 个元素,我将使用从每个获取的数据写入一个 html 文件迭代

标签: python


【解决方案1】:

你可以使用zip

s =  [[1, 3, 4], [2, 4, 4], [3, 7, 5]]
print zip(*s)
#[(1, 2, 3), (3, 4, 7), (4, 4, 5)]

【讨论】:

    【解决方案2】:
    def get_column(n, table):
        result = []
        for line in table:
            result.append(line[n])
        return result
    
    test = [[1,2,3],[4,5,6],[7,8,9]]
    
    for i in range(len(test[0])):
        print(get_column(i, test))
    

    执行:

    [1, 4, 7]
    [2, 5, 8]
    [3, 6, 9]
    

    【讨论】:

    • 谢谢,问题解决了
    • 我建议你接受这样的回应。
    【解决方案3】:

    zip 方法的替代方案,

    >>> a = [[1, 3, 4], [2, 4, 4], [3, 7, 5]]
    >>> new_list = []
    >>> for k,v in enumerate(a):
    ...     new_list.append([])
    ...     for item in a:
    ...             new_list[-1].append(item[k])
    ... 
    >>> new_list
    [[1, 2, 3], [3, 4, 7], [4, 4, 5]]
    

    【讨论】:

      【解决方案4】:

      如上所述,您可以使用zip 的优雅方式,但如果您想在每次迭代中访问列并且不想一次获得所有列 @987654322 @ 是你要找的,itertools.izip 返回一个生成器,你可以在每次迭代中得到结果:

      >>> from itertools import izip
      >>> for i in izip(*a):
      ...  print i
      ... 
      (1, 2, 3)
      (3, 4, 7)
      (4, 4, 5)
      

      您还可以在for 循环中使用pop(性能低于izip):

      >>> a = [[1, 3, 4], [2, 4, 4], [3, 7, 5]]
      >>> test=[]
      >>> for i in range(len(a[0])):
      ...   for j in a:
      ...    test.append(j.pop(0))
      ...   print test
      ...   test=[]
      ... 
      [1, 2, 3]
      [3, 4, 7]
      [4, 4, 5]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-12-25
        • 2019-09-01
        • 1970-01-01
        • 2018-10-23
        • 2015-01-17
        • 2014-03-12
        相关资源
        最近更新 更多