3 回答
TA贡献1802条经验 获得超4个赞
您可以使用以下列表推导式, wherere.sub用于删除不需要的字符,底层列表是使用.split和 分割获得的,。
最后,为了从嵌套列表中获取唯一元素,您可以使用itertools.chain扁平化嵌套列表,并set从结果中生成 a以保持唯一值:
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']]
TA贡献1856条经验 获得超11个赞
您可以使用以下列表推导式, wherere.sub用于删除不需要的字符,底层列表是使用.split和 分割获得的,。
最后,为了从嵌套列表中获取唯一元素,您可以使用itertools.chain扁平化嵌套列表,并set从结果中生成 a以保持唯一值:
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']]
TA贡献1780条经验 获得超1个赞
首先,我会尝试替换,(逗号),'(单引号),[](使用模式匹配用空字符串打开右方括号。然后使用删除重复项set并使用list如下重建列表:
my_list = ["[amn,b,c]", "['a, d,e']", "['f,b,e']"]
result = sorted(list(set(([letter for word in my_list for letter in re.sub(',|\'|\[|]|\s+', '', word)]))))
print(result)
在哪里
re.sub(',|\'|\[|]|\s+', '', word)])
将替换字符串中的特殊字符。例如,['a, d,e']到ade.
基于理解的解决方案在技术上等同于
result = []
for word in my_list: # Break list of lists to lists
word = re.sub(',|\'|\[|]|\s+', '', word)
for letter in word: # Process each word in the sub list
result.append(letter)
print('results with duplicates: ', result) # List with possible duplicates
result = set(result) # Remove duplicates by converting to a set
result = list(result) # Convert set back to list without duplicates (order is not preserved)
print('results without duplicates: ', result)
result = sorted(result)
print('results in sorted order: ', result)
结果为
results with duplicates: ['a', 'm', 'n', 'b', 'c', 'a', 'd', 'e', 'f', 'b', 'e']
results without duplicates: ['e', 'a', 'd', 'm', 'f', 'c', 'n', 'b']
results in sorted order: ['a', 'b', 'c', 'd', 'e', 'f', 'm', 'n']
添加回答
举报