【问题标题】:looping over columns in a 2d list [duplicate]循环二维列表中的列[重复]
【发布时间】:2021-01-14 11:16:56
【问题描述】:

我正在尝试遍历此二维列表中的每一列,并计算“事物”或“A”在该列中出现的次数。这就是我想要做的,这里是 2d 列表。

l =    [ ["A", 1 , 2 , 3 , 4 , 5],
     ["A","A", 2 , 3 , 4 , 5],
     [ 1 , 2 , 3 , 4 , 5 , 5 ],
     ["A","A","A","A","A","A"],
     ["A", 3 ,"A", 4 ,"A","A"],
     [ 1 , 3 , 5 ,"A", 5 ,"A"] ]

col_count=[]
co = []
for i in l:
    co.append[0]
    for x in co:
        c = 0
        if thing == x:
            c += 1
    col_count.append(c)
print(col_count)

我正在尝试获取每一行的第一个元素,然后将其添加到列表中并以这种方式遍历它。

预期的输出是

[4, 2, 2, 2, 2, 3]

谢谢!

【问题讨论】:

    标签: python list loops nested nested-loops


    【解决方案1】:
    l = [ ["A", 1 , 2 , 3 , 4 , 5],
        ["A","A", 2 , 3 , 4 , 5 ],
        [ 1 , 2 , 3 , 4 , 5 , 5 ],
        ["A","A","A","A","A","A"],
        ["A", 3 ,"A", 4 ,"A","A"],
        [ 1 , 3 , 5 ,"A", 5 ,"A"]]
    
    col_count = []
    
    for X in range(6):
        Count = 0
        for Y in range(len(l)):
            if l[Y][X] == "A":
                Count += 1
        col_count.append(Count)
    print(col_count)
    

    这应该可以工作,它会遍历列并在其为“A”时添加一个

    【讨论】:

      【解决方案2】:

      您可以使用zip transpose 矩阵(二维列表),并通过列表理解计算每行中“A”的出现次数。

      l = [
          ["A", 1 , 2 , 3 , 4 , 5 ],
          ["A","A", 2 , 3 , 4 , 5 ],
          [ 1 , 2 , 3 , 4 , 5 , 5 ],
          ["A","A","A","A","A","A"],
          ["A", 3 ,"A", 4 ,"A","A"],
          [ 1 , 3 , 5 ,"A", 5 ,"A"]
      ]
      
      print([row.count("A") for row in [*zip(*l)]])
      

      只要每行的列数一致,这适用于任何行数和列数。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-11-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多