我有以下列表
list1= ['Dodd-Frank', 'insurance', 'regulation']
我使用以下内容删除了连字符
new1 =[j.replace('-', ' ') for j in list1]
我得到的结果
new1= ['Dodd Frank', 'insurance', 'regulation']
理想情况下想要的结果是
new1= ['Dodd', 'Frank', 'insurance', 'regulation']
我怎样才能以最pythonic(最有效的方式(完成此操作
list1 = ['Dodd-Frank', 'insurance', 'regulation']
new1 = '-'.join(list1).split('-')
print(new1)
指纹:
['Dodd', 'Frank', 'insurance', 'regulation']
从丑陋到美丽
美丽总比丑陋好。
但是,从丑陋的代码转向漂亮的代码通常是有益的。因此,我们将首先使用循环来解决这个问题,然后我们将通过多个步骤将loop-y解决方案按摩到单行中。
第一次尝试
res = []
for item in list1:
sublist = item.split("-")
for subitem in sublist:
res.append(subitem)
第二次尝试
我们可以通过在内部for
循环的标头中拆分sublist
来做得更好,以避免在循环之前进行分配。
res = []
for item in list1:
for subitem in item.split("-"):
res.append(subitem)
而对于最后一幕...
现在我们有了迭代然后追加形式的循环,我们可以方便地将其按摩成单行。
res = [subitem for item in list1 for subitem in item.split("-")]
list2 = []
[list2.extend(i.split("-")) for i in list1]
列表2:
['Dodd', 'Frank', 'insurance', 'regulation']
这可以通过单个列表理解来完成,而无需您 构造任何中间数据结构:
my_list = ['Dodd-Frank', 'insurance', 'regulation']
def split_hyphens(lst):
return [i for word in lst for i in word.split("-")]
print(split_hyphens(my_list))
带输出
['Dodd', 'Frank', 'insurance', 'regulation']
使用yield from
的变体
list1= ['Dodd-Frank', 'insurance', 'regulation']
def hyphen_split(list1):
for sublst in list1:
yield from sublst.split("-")
print(list(hyphen_split(list1)))
输出
['Dodd', 'Frank', 'insurance', 'regulation']
[Program finished]