Sti*_*n G 5 brackets list set python-3.x
假设我有以下列表:
m=[1,2,[1],1,2,[1]]
Run Code Online (Sandbox Code Playgroud)
我想带走所有重复的东西.如果它不是列表中的括号,那么我可以使用:
m=list(set(m))
Run Code Online (Sandbox Code Playgroud)
但是当我这样做时,我得到错误:
不可用的类型'集'.
什么命令将帮助我删除重复项,以便我只能留下列表
m=[1,2,[1]]
Run Code Online (Sandbox Code Playgroud)
谢谢
您可以按照以下方式做一些事情:
m=[1,2,[1],1,2,[1]]
seen=set()
nm=[]
for e in m:
try:
x={e}
x=e
except TypeError:
x=frozenset(e)
if x not in seen:
seen.add(x)
nm.append(e)
>>> nm
[1, 2, [1]]
Run Code Online (Sandbox Code Playgroud)
来自评论:此方法保留原始列表的顺序。如果您希望数字类型排在第一位,其他类型排在第二位,您可以执行以下操作:
sorted(nm, key=lambda e: 0 if isinstance(e, (int,float)) else 1)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
130 次 |
| 最近记录: |