根据条件过滤元组列表

CFD*_*CFD 5 python tuples list

我有一个这样的清单:

A=[(1,'A'),(2,'H'),(3,'K'),(4,'J')]
Run Code Online (Sandbox Code Playgroud)

这个列表的每个成员都是这样的:(数字,字符串)

现在如果我想选择数字大于2的成员并写字符串,我该怎么办?

例如:选择数字大于 2 的成员。输出应为: 'K','J'

U10*_*ard 8

使用列表理解:

[y for x,y in A if x>2]
Run Code Online (Sandbox Code Playgroud)

演示:

>>> A=[(1,'A'),(2,'H'),(3,'K'),(4,'J')]
>>> [y for x,y in A if x>2]
['K', 'J']
>>> 
Run Code Online (Sandbox Code Playgroud)


Fra*_* AK 7

尝试 :

In [4]: [x[1] for x in A if x[0] > 2]                                                                                                                                                                           
Out[4]: ['K', 'J']
Run Code Online (Sandbox Code Playgroud)


mun*_*unk 5

您想要根据某些条件进行过滤,然后显示这些项目的表示形式。有几种方法可以做到这一点。

\n\n

带过滤的列表理解。这通常被认为是惯用的或 \xe2\x80\x9cpythonic\xe2\x80\x9d

\n\n
B = [char for char, val in A if val > 2]\n
Run Code Online (Sandbox Code Playgroud)\n\n

过滤和映射。如果您的列表非常大并且您不想将其全部保存在内存中,那么这是懒惰且有用的。

\n\n
greater_than_2 = filter(lambda a: a[1] > 2, A)\nB = map(lambda a: a[0], greater_than_2)\n
Run Code Online (Sandbox Code Playgroud)\n\n

或者一个循环和累加器。如果您想对每个元素产生副作用,那么这很好。

\n\n
B = []\nfor char, val in A:\n    if val > 2:\n        B.append(char)\n
Run Code Online (Sandbox Code Playgroud)\n