元组提取的python元组

时间:2014-03-16 18:38:22

标签: python list-comprehension iterable-unpacking

假设您有以下元组元组:

test = ((1, '2'), (3, '4'), ('5', '6'))

如果我想提取每个元组的第二个元素,我会这样做:

secondonly = tuple([x[-1] for x in test])

我也看到了:

secondonly = tuple([x for word, x in test])< ---- ** < ---这是怎么回事?

有人可以解释一下 ** 这一行是如何给出好结果的吗?感谢

2 个答案:

答案 0 :(得分:3)

test 包含3个长度为2的元组。for word, x in test(相当于for (word, x) in test)将每个元组的第一个元素解包为 word 第二个是 x 。因此[x for (word, x) in test]将每隔一个元素( x )创建一个列表。

答案 1 :(得分:1)

它与您在第一个示例中所做的类似 - “x for x in blah”构建了for循环中累积的所有x的列表。在这个例子中,for循环包括将“test”的每个元素赋值为“word,x”,它自动将元组解包为这两个变量,因此意味着“word”和“x”取第一个和第二个元素每个元组分别。这意味着“x”总是引用元组的第二个元素,因此循环根据需要构建第二个元素的列表。