所以有一个包含
的列表'3,2,5,4,1','3,1,2,5,4','2,5,1,4,3'
这些数字是同一个列表的一部分,但它们是列表中的字符串(即列表1)
从此,你说对于“第一行”,3发生在位置0,2发生在位置1,5发生在2等。 对于“第二行”,3发生在位置0,1发生在位置1,2发生在位置2等。
我想创建一个循环或任何东西(除了使用导入的函数)来创建一个看起来像
的最终列表0: [3, 3, 2]
1: [2, 1, 5]
2: [5, 2, 1]
3: [4, 5, 4]
4: [1, 4, 3]
答案 0 :(得分:1)
使用Dictionary comprehension
和List comprehension
的单行代码:
>>> { col:[row[col] for row in l] for col in range(len(l[0])) }
=> {0: [3, 3, 2], 1: [2, 1, 5], 2: [5, 2, 1], 3: [4, 5, 4], 4: [1, 4, 3]}
#driver values:
IN : l = [[3,2,5,4,1],
[3,1,2,5,4],
[2,5,1,4,3]]
向OP注意:通过查看其结构,output
建议的是Dictionary
。无法以相同的方式定义list
。
编辑:由于OP的list
是list of strings
,首先使用list of int
将其转换为map
,然后继续如上。
>>> l = ['3,2,5,4,1', '3,1,2,5,4', '2,5,1,4,3']
>>> l = [list(map(int,s.split(','))) for s in l]
>>> l
=> [[3, 2, 5, 4, 1], [3, 1, 2, 5, 4], [2, 5, 1, 4, 3]]
答案 1 :(得分:1)
可以使用zip()
In [1]: l = [[3,2,5,4,1],
...: [3,1,2,5,4],
...: [2,5,1,4,3]]
In [2]: t = list(zip(*l))
In [3]: t
Out[3]: [(3, 3, 2), (2, 1, 5), (5, 2, 1), (4, 5, 4), (1, 4, 3)]
以上述格式输出:
In [4]: for n,line in enumerate(t):
...: print("{}: {}".format(n, list(line)))
...:
0: [3, 3, 2]
1: [2, 1, 5]
2: [5, 2, 1]
3: [4, 5, 4]
4: [1, 4, 3]