拆分 Python 列表
Splitting Python List
我想拆分下面的列表:
my_list = [(55, 22), (66, 33), (77, 44)]
我试过:
a, b = my_list
这没有用。
我需要的是:
a = [55,66,77]
b = [22,33,44]
我正在寻找最简单易行的方法。
In [18]: L = [(55, 22), (66, 33), (77, 44)]
In [19]: a,b = zip(*L)
In [20]: a
Out[20]: (55, 66, 77)
In [21]: b
Out[21]: (22, 33, 44)
您需要执行以下操作-
a, b = zip(*my_list)
方法一使用zip和map:
a, b = map(list, zip(*my_list)) #this returns 2 lists
a
[55, 66, 77]
b
[22, 33, 44]
这里我没有只使用 zip(*my_list)
,而是使用 map
和 zip
来获得 2 个列表而不是 OP 要求的两个元组。
zip(*)的解释:这个函数接受两个等长的集合,并将它们成对合并在一起。如果我们在 2 个列表上使用它,我们会得到以下结果:
a1 = [1,2,3]
a2 = [4,5,6]
a3 = zip(a1,a2)
[(1, 4), (2, 5), (3, 6)]
现在,如果您需要取消合并它们,您可以再次使用 zip()
,因为 zip
是它自己的反函数,但您需要使用特殊的 *
运算符。 *
运算符用于解包值。
a4,a5 = zip(*a3)
a4
(1, 2, 3) #returns a tuple though
a5
(4, 5, 6) #returns a tuple though
方法二列表理解:
a = [x[0] for x in my_list]
b = [x[1] for x in my_list]
a
[55, 66, 77]
b
[22, 33, 44]
在这里,我们使用列表理解来生成两个列表。
我建议你使用第一种方法。
您可以改为使用 zip,您可以使用 for 循环遍历列表中的元组
检查这段代码
first_element_list =list()
>>> second_element_list = list()
>>> for i in my_list:
... first_element_list.append(i[0])
... second_element_list.append(i[1])
或
first_element_list =list()
second_element_list = list()
[first_element_list.append(i[0]) for i in my_list]
[second_element_list.append(i[1]) for i in my_list]
我想拆分下面的列表:
my_list = [(55, 22), (66, 33), (77, 44)]
我试过:
a, b = my_list
这没有用。
我需要的是:
a = [55,66,77]
b = [22,33,44]
我正在寻找最简单易行的方法。
In [18]: L = [(55, 22), (66, 33), (77, 44)]
In [19]: a,b = zip(*L)
In [20]: a
Out[20]: (55, 66, 77)
In [21]: b
Out[21]: (22, 33, 44)
您需要执行以下操作-
a, b = zip(*my_list)
方法一使用zip和map:
a, b = map(list, zip(*my_list)) #this returns 2 lists
a
[55, 66, 77]
b
[22, 33, 44]
这里我没有只使用 zip(*my_list)
,而是使用 map
和 zip
来获得 2 个列表而不是 OP 要求的两个元组。
zip(*)的解释:这个函数接受两个等长的集合,并将它们成对合并在一起。如果我们在 2 个列表上使用它,我们会得到以下结果:
a1 = [1,2,3]
a2 = [4,5,6]
a3 = zip(a1,a2)
[(1, 4), (2, 5), (3, 6)]
现在,如果您需要取消合并它们,您可以再次使用 zip()
,因为 zip
是它自己的反函数,但您需要使用特殊的 *
运算符。 *
运算符用于解包值。
a4,a5 = zip(*a3)
a4
(1, 2, 3) #returns a tuple though
a5
(4, 5, 6) #returns a tuple though
方法二列表理解:
a = [x[0] for x in my_list]
b = [x[1] for x in my_list]
a
[55, 66, 77]
b
[22, 33, 44]
在这里,我们使用列表理解来生成两个列表。
我建议你使用第一种方法。
您可以改为使用 zip,您可以使用 for 循环遍历列表中的元组
检查这段代码
first_element_list =list()
>>> second_element_list = list()
>>> for i in my_list:
... first_element_list.append(i[0])
... second_element_list.append(i[1])
或
first_element_list =list()
second_element_list = list()
[first_element_list.append(i[0]) for i in my_list]
[second_element_list.append(i[1]) for i in my_list]