Lst = [[1,2,3],[201,202,203],[3,1,4],[591,2019,3.14]]
我需要的是-
a1,b1,c1 = (1,2,3)
a2,b2,c2 = (201,202,203)
以此类推...
答案 0 :(得分:3)
您希望将值映射到坐标。好吧,您可以直接通过L[outer_list_idx][inner_list_idx]
进行几个列表操作即可访问。
您可以将字典用于可变数量的变量。这样就无需显式定义大量变量。
使用字母的明显限制是最多允许26个列表。如果这是您想要的,则无需显式定义字母,请使用string.ascii_lowercase
:
from string import ascii_lowercase
L = [[1,2,3],[201,202,203],[3,1,4],[591,2019,3.14]]
m, n = len(L), len(L[0])
d = {(ascii_lowercase[j], i+1): L[i][j] for i in range(m) for j in range(n)}
print(d)
{('a', 1): 1, ('b', 1): 2, ('c', 1): 3,
('a', 2): 201, ('b', 2): 202, ('c', 2): 203,
('a', 3): 3, ('b', 3): 1, ('c', 3): 4,
('a', 4): 591, ('b', 4): 2019, ('c', 4): 3.14}
然后通过元组键访问。因此,要从第3个列表中检索第2个值,可以使用d[('b', 3)]
。
答案 1 :(得分:0)
您可以为此use itertools.chain.from_iterable()
:
t = [[1,2,3],[201,202,203],[3,1,4],[591,2019,3.14]]
from itertools import chain
a1,b1,c1,a2,b2,c2,a3,b3,c3,a4,b4,c4 = chain.from_iterable(t) # flattens the list of lists
print(a1,b1,c1,a2,b2,c2,a3,b3,c3,a4,b4,c4)
输出:
1 2 3 201 202 203 3 1 4 591 2019 3.14
您需要事先了解列表的尺寸和变量名。我可能只会使用原始列表...
答案 2 :(得分:0)
您只需要这些值吗?然后这样:
Lst = [[1,2,3],[201,202,203],[3,1,4],[591,2019,3.14]]
for k in Lst:
a, b, c = k
print(a, b, c)
答案 3 :(得分:0)
该示例可以通过简单的元组拆解来解决。您可以使用zip
来配对值:
lst = [[1,2,3],[201,202,203],[3,1,4],[591,2019,3.14]]
((a1, b1, c1), (a2, b2, c2)), _ = zip(lst[::2], lst[1::2])
print(a1, b1, c1)
print(a2, b2, c2)
这将打印:
1 2 3
201 202 203
如果需要下一个值,可以执行以下操作:
_, ((a1, b1, c1), (a2, b2, c2)) = zip(lst[::2], lst[1::2])
print(a1, b1, c1)
print(a2, b2, c2)
输出:
3 1 4
591 2019 3.14