如何将元组分成两个独立的列表? [重复]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将元组分成两个独立的列表? [重复]相关的知识,希望对你有一定的参考价值。

这个问题在这里已有答案:

我想将以下元组分成两个列表

(('happy', 5.001), ('neutral', 10.004), ('neutral', 15.006), ('happy', 20.071), 
 ('fear', 25.071))

我希望我的列表如下所示:

a = ('happy', 'neutral', 'neutral', 'happy', 'fear')
b = (5.001, 10.004, 15.006, 20.071, 25.071)

split()方法不适用于此。

答案

这是你的新英雄,zip功能!

l = (('happy', 5.001), ('neutral', 10.004), ('neutral', 15.006), ('happy', 20.071), ('fear', 25.071))
a, b = zip(*l)

对于未来的使用,我们可以说它有两种不同的模式:

  • zip(*iterable)生成n个iterables(n是迭代中每个元组的大小),其中每个iterable包含每个元组的第i个元素(我的答案的例子)。
  • zip(iterable_1, ..., iterable_n)生成一个iterable,其中每个元素都是一个大小为n的元组,包含相应索引处每个iterable的元素。
另一答案
t = (('happy', 5.001), ('neutral', 10.004), ('neutral', 15.006), ('happy', 20.071), ('fear', 25.071))
a, b = zip(*t)
另一答案

做你想做的事你可以做到以下几点

c = (('happy', 5.001), ('neutral', 10.004), ('neutral', 15.006), ('happy', 20.071), ('fear', 25.071))
a, b = zip(*c)

但在这种情况下,a和b是元组而不是列表,列表采用以下格式:

a = ['happy', 'neutral', 'neutral', 'happy', 'fear']
b = [5.001, 10.004, 15.006, 20.071, 25.071]

你可以只列出(a)从元组转换为列表

另一答案
t = (('happy', 5.001), ('neutral', 10.004), ('neutral', 15.006), ('happy', 20.071), ('fear', 25.071))
a = [x[0] for x in t]
b = [x[1] for x in t]

这使用列表解析来解决问题。它使用来自't'中每个元组的第一个元素(索引0)创建列表'a',而使用第二个元素(索引1)创建列表'b'。

以上是关于如何将元组分成两个独立的列表? [重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何将元组列表展平为pythonic列表[重复]

scala 将元组解包到案例类参数和附加的 zip 两个序列中

将元组列表的字典转换为数据框

如何将元组列表转换为 pandas 数据框,以便每个元组的第一个值代表一列?

Spark 2.0:如何将元组的 RDD 转换为 DF [重复]

如何将元组列表从 python 发送和解包到 qml?