如果我有一个列表mylist = [“[amn,b,c]”,“[‘a,d,e’]”,“[‘f,b,e’]”],我需要一个列表所有独特元素如[amn,b,c,d,e,f],我该如何实现?
我试过创建一个函数,并尝试了其他一些方法,但无济于事.
功能:
mylist = ["[amn,b,c]", "[‘a,d,e’]", "[‘f,b,e’]"]
def print_list(the_list):
for each_item in the_list:
if isinstance(each_item, list):
print_list(each_item)
else:
print(each_item)
print_list(mylist)
输出:
[amn,b,c]
[‘a,d,e’]
[‘f,b,e’]
其他方法:
mylist = ["[amn,b,c]", "[‘a, d,e’]", "[‘f,b,e’]"]
mylist = str(mylist)
mylist = str(mylist)
mylist = [str(x) for x in (mylist)]
mylist = set(mylist)
i = {' ', "'", ',', '[', ']','‘', '’'}
mylist.difference_update(i)
mylist = list(mylist)
mylist.sort()
mylist
输出:
['a', 'b', 'c', 'd', 'e', 'f', 'm', 'n']
预期成绩:
[amn,b,c,d,e,f]
实际结果:
具有以下功能:
[amn,b,c]
[‘a,d,e’]
[‘f,b,e’]
用另一种方法:
['a', 'b', 'c', 'd', 'e', 'f', 'm', 'n']
最佳答案 您可以使用以下列表推导,其中使用
re.sub来删除不需要的字符,并使用.split获取基础列表,并使用,.
最后,为了从嵌套列表中获取唯一元素,您可以使用itertools.chain展平嵌套列表,并从结果生成一个集合以保留唯一值:
import re
from itertools import chain
set(chain(*[re.sub(r'[\[‘’\"\]]', '', i).split(',') for i in mylist]))
{'a', 'amn', 'b', 'c', 'd', 'e', 'f'}
哪里:
[re.sub(r'[\[‘’\"\]]', '', i).split(',') for i in mylist]
[['amn', 'b', 'c'], ['a', 'd', 'e'], ['f', 'b', 'e']]