从列表中排序元素

Căt*_*ilă 0 python

我需要从列表中提取一些元素(在本例中为n)我还有另一个列表(列表)

n=['A','B','C','D','E']
o=['A','B','C','D','E','AS','sd','Z','R']
n.sort()
Run Code Online (Sandbox Code Playgroud)

现在,如果我使用此代码:

for o in sorted(n): 
Run Code Online (Sandbox Code Playgroud)

代码运行'A','B','C','D','E'.

我需要运行for代码但只运行'AS','sd','Z','R'项目.

类似于:运行o列表中的项目的代码,而不包含n列表中的项目

eum*_*iro 6

这只有在o没有重复的情况下才有效:

n = ['A','B','C','D','E']
o = ['A','B','C','D','E','AS','sd','Z','R']
a = sorted(set(o) - set(n))

# a == ['AS', 'R', 'Z', 'sd']
Run Code Online (Sandbox Code Playgroud)

否则使用这个:

n = ['A','B','C','D','E']
o = ['A','B','C','D','E','AS','sd','Z','R', 'AS']
s = set(n)
a = sorted(elem for elem in o if elem not in s)

# a == ['AS', 'AS', 'R', 'Z', 'sd']
Run Code Online (Sandbox Code Playgroud)

  • 请注意,if条件会在每次迭代时创建一个新的`set`. (2认同)
  • 更好地计算循环外的`set(n)` (2认同)