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'
使用列表理解:
[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)
尝试 :
In [4]: [x[1] for x in A if x[0] > 2]
Out[4]: ['K', 'J']
Run Code Online (Sandbox Code Playgroud)
您想要根据某些条件进行过滤,然后显示这些项目的表示形式。有几种方法可以做到这一点。
\n\n带过滤的列表理解。这通常被认为是惯用的或 \xe2\x80\x9cpythonic\xe2\x80\x9d
\n\nB = [char for char, val in A if val > 2]\nRun Code Online (Sandbox Code Playgroud)\n\n过滤和映射。如果您的列表非常大并且您不想将其全部保存在内存中,那么这是懒惰且有用的。
\n\ngreater_than_2 = filter(lambda a: a[1] > 2, A)\nB = map(lambda a: a[0], greater_than_2)\nRun Code Online (Sandbox Code Playgroud)\n\n或者一个循环和累加器。如果您想对每个元素产生副作用,那么这很好。
\n\nB = []\nfor char, val in A:\n if val > 2:\n B.append(char)\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
13166 次 |
| 最近记录: |