假设您有以下元组:
test = ((1, '2'), (3, '4'), ('5', '6'))如果我想提取每个元组的第二个元素,我会这样做:
secondonly = tuple([x[-1] for x in test])我也见过:
secondonly = tuple([x for word, x in test]) <- ** <-这是如何工作的?
有人能解释一下**是怎么得到好结果的吗?谢谢
发布于 2014-03-16 18:42:08
测试包含3个长度为2的元组。for word, x in test (相当于for (word, x) in test)将每个元组的第一个元素解压缩为word,第二个元组解压缩为x。因此,[x for (word, x) in test]将每第二个元素(x)用于创建列表。
发布于 2014-03-16 18:42:22
这与您在第一个示例中所做的类似--“xs in blah”构建了在for循环中积累的所有xs的列表。在示例中,for循环包括将"test“的每个元素分配给"word,x",它会自动将元组解压到这两个变量中,因此意味着"word”和"x“分别接受每个元组的第一个和第二个元素。这意味着"x“总是指元组的第二个元素,因此循环根据需要建立第二个元素的列表。
https://stackoverflow.com/questions/22441101
复制相似问题