使用列表理解根据列表中的条件更改字符串

Change strings based on a condition in a list using list comprehension

假设我有一个这样的列表:

a = ['abc1', '2def', 'g3h']

我正在尝试使用列表推导来实现它:

['abc', 'def', 'gh']

我尝试过的:

[''.join([x for y in a for x in y if x.isalpha()])]

产生:

# ['abcdefgh']

是否有使用列表理解实现 ['abc', 'def', 'gh'] 的巧妙方法?

在嵌套理解中使用 str.join

例如:

a = ['abc1', '2def', 'g3h']
print(["".join(j for j in i if j.isalpha()) for i in a])
# -> ['abc', 'def', 'gh']

如果你可以使用正则表达式,我会这样做:

import re
a = ['abc1', '2def', 'g3h']
[re.sub("\d+", "", x) for x in a]

地图和过滤器的使用

list(map(lambda x:"".join(filter(lambda y:y.isalpha(), x))  ,a))