lst = ['Red color', 'Orange#', 'Green', 'Orange @', "White"] char_lst = ['#', 'color', '@'] temp = '----'.join(lst) for i in char_lst: temp = temp.replace(i, '') res = temp.split('----') res = list({i.strip() for i in res}) print(res)
一个replace搞定,结果如下图所示:
方法二
这里【杰】给了一个稍微复杂的代码,如下所示:
lst = ['Red color', 'Orange#', 'Green', 'Orange @', "White"] char_lst = ['#', 'color', '@'] flag = 0 set_1 = set() for ls in lst: for ch in char_lst: if ls.endswith(ch): set_1.add(ls.rstrip(ch).strip()) flag = 1 if flag == 0: set_1.add(ls) else: flag = 0 new_lis = list(set_1) print(new_lis)
运行结果如下所示:
也是可以满足要求的。
方法三
这里【flag != flag】给了一个正则表达式的方法,代码如下所示:
import re lst = ['Red color', 'Orange#', 'Green', 'Orange @', "White"] char_lst = ['#', 'color', '@'] s = ''.join(lst+char_lst) dct = {i: 1 for i in re.compile(r'([A-Z][a-z]+)').findall(s)} lis = list(dct.keys()) print(lis)
运行结果如下所示:
方法四
这里【瑜亮老师】又给了一个集合方法,代码如下所示:
lst = ['Red color', 'Orange#', 'Green', 'Orange @', "White"] char_lst = ['#', 'color', '@'] res1 = {i for i in lst if char_lst[0] not in i and char_lst[1] not in i and char_lst[2] not in i} res2 = {i.strip(j).strip() for i in lst for j in char_lst if j in i} res1.update(res2) res = list(res1) print(res)
import re lst = ['Red color', 'Orange#', 'Green', 'Orange @', "White"] char_lst = ['#', 'color', '@'] s = ''.join(lst+char_lst) st = {i for i in re.compile(r'([A-Z][a-z]+)').findall(s)} lis = list(st) print(lis)
运行结果如下所示:
方法六
这里【瑜亮老师】基于嵌套for循环+break版,又给了一个方法,代码如下所示:
lst = ['Red color', 'Orange#', 'Green', 'Orange @', "White"] char_lst = ['#', 'color', '@'] st = [] for i in lst[:]: for j in char_lst: if' 'in i: st.append(i[:i.find(' ')]) break elif j in i: st.append(i[:i.find(j)]) break else: st.append(i) break res = list(set(st)) print(res)
运行结果如下所示:
方法七
这里【flag != flag】又给了一个方法,代码如下所示:
lst = ['Redcolor', 'Orange#', 'Green', 'Orange@', "White"] char_lst = ['#', 'color', '@'] for i in char_lst: for index, item in enumerate(lst): if i in item: new_item = item.replace(i, '').strip() lst[index] = new_item if lst.count(new_item) > 1: del lst[lst.index(new_item)] print(lst)
结果如下图所示:
后来【瑜亮老师】针对这个代码,稍微优化了下,代码如下所示:
lst = ['Red color', 'Orange#', 'Green', 'Orange @', "White"] char_lst = ['#', 'color', '@'] for i in char_lst: for index, item in enumerate(lst): if i in item: new_item = item.replace(i, '').strip() if new_item not in lst: lst[index] = new_item else: del lst[lst.index(item)] print(lst)