使用列表理解根据列表中的条件更改字符串
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))
假设我有一个这样的列表:
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))