将列表值分配给参数
Assigning list values to the parameter
我有以下列表:
lst = [(A,[1,2,3,4]), (B, [1,2,3,5]). (C, [4,5,7,6])]
我想拆分列表,使所有 x(应为 str)值包含 A、B、C、D 和 Y(应为 int)包含 [1,2,3,4],[ 1,2,3,5], [4,5,7,6]。期望的输出:
print(x)
A, B, C, D
print(y)
[1,2,3,4], [1,2,3,5], [4,5,7,6]
到目前为止我尝试了什么?
x,y=[(a,b) for a, b in zip(lst[0], lst[1])])]
这不存储 x 和 y 的值。我该怎么做?
你可以使用列表理解 -
>>> lst = [('A',[1,2,3,4]), ('B', [1,2,3,5]), ('C', [4,5,7,6])]
>>>
>>>
>>>
>>>
>>> x = [val[0] for val in lst]
>>> x
['A', 'B', 'C']
>>> y = [val[1] for val in lst]
>>> y
[[1, 2, 3, 4], [1, 2, 3, 5], [4, 5, 7, 6]]
>>>
对 zip 使用列表理解,
x,y = zip(*[(item[0], item[1]) for item in lst])
一个班轮:
x, y = zip(*lst)
示例:
lst = [('A',[1,2,3,4]), ('B', [1,2,3,5]), ('C', [4,5,7,6])]
x, y = zip(*lst)
print(x) # Out: ('A', 'B', 'C')
print(y) # Out: ([1, 2, 3, 4], [1, 2, 3, 5], [4, 5, 7, 6])
如果你必须把它放在一行中,你也可以这样做
x,y = [[v[i] for v in lst] for i in (0,1)]
但我不确定它是否比更长更清晰的内容有所改进。
我有以下列表:
lst = [(A,[1,2,3,4]), (B, [1,2,3,5]). (C, [4,5,7,6])]
我想拆分列表,使所有 x(应为 str)值包含 A、B、C、D 和 Y(应为 int)包含 [1,2,3,4],[ 1,2,3,5], [4,5,7,6]。期望的输出:
print(x)
A, B, C, D
print(y)
[1,2,3,4], [1,2,3,5], [4,5,7,6]
到目前为止我尝试了什么?
x,y=[(a,b) for a, b in zip(lst[0], lst[1])])]
这不存储 x 和 y 的值。我该怎么做?
你可以使用列表理解 -
>>> lst = [('A',[1,2,3,4]), ('B', [1,2,3,5]), ('C', [4,5,7,6])]
>>>
>>>
>>>
>>>
>>> x = [val[0] for val in lst]
>>> x
['A', 'B', 'C']
>>> y = [val[1] for val in lst]
>>> y
[[1, 2, 3, 4], [1, 2, 3, 5], [4, 5, 7, 6]]
>>>
对 zip 使用列表理解,
x,y = zip(*[(item[0], item[1]) for item in lst])
一个班轮:
x, y = zip(*lst)
示例:
lst = [('A',[1,2,3,4]), ('B', [1,2,3,5]), ('C', [4,5,7,6])]
x, y = zip(*lst)
print(x) # Out: ('A', 'B', 'C')
print(y) # Out: ([1, 2, 3, 4], [1, 2, 3, 5], [4, 5, 7, 6])
如果你必须把它放在一行中,你也可以这样做
x,y = [[v[i] for v in lst] for i in (0,1)]
但我不确定它是否比更长更清晰的内容有所改进。