我有两个清单:
l1 = ['#', '1', '#', '!']
l2 = ['S', 'T', 'K', 'M']
Run Code Online (Sandbox Code Playgroud)
如果在L1以"#"我想删除它,并消除任何是在L2相同的位置.这是我尝试过的(在其他几个方面):
for i in range(len(li[j])):
for k in range(len(l2[n])):
if j == "#":
li.remove([j][i])
l2.remove([n][k])
Run Code Online (Sandbox Code Playgroud)
但它抱怨j没有定义.我希望结果看起来像这样:
l1 = ['1', '!']
l2 = ['T', 'M']
Run Code Online (Sandbox Code Playgroud)
我很感激你的建议!
>>> l1 = ['#', '1', '#', '!']
>>> l2 = ['S', 'T', 'K', 'M']
>>> l1,l2 = zip(*((x,y) for x,y in zip(l1,l2) if x!='#'))
>>> l1
('1', '!')
>>> l2
('T', 'M')
Run Code Online (Sandbox Code Playgroud)
运用 filter
>>> l1,l2 = zip(*filter(lambda x: '#' not in x,zip(l1,l2)))
>>> l1
('1', '!')
>>> l2
('T', 'M')
Run Code Online (Sandbox Code Playgroud)
运用 itertools
>>> from itertools import compress
>>> l1,l2 = zip(*compress(zip(l1,l2),(x!='#' for x in l1)))
>>> l1
('1', '!')
>>> l2
('T', 'M')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
476 次 |
| 最近记录: |