我可以在列表中进行排序时访问列表吗? list.sort()
b = ['b', 'e', 'f', 'd', 'c', 'g', 'a']
f = 'check this'
def m(i):
print i, b, f
return None
b.sort(key=m)
print b
Run Code Online (Sandbox Code Playgroud)
这回来了
b [] check this
e [] check this
f [] check this
d [] check this
c [] check this
g [] check this
a [] check this
Run Code Online (Sandbox Code Playgroud)
请注意,列表的各个项目将b发送到功能m.但是在m列表中b是空的,但它可以看到变量f,其范围与列表相同b.为什么功能m打印b为[]?
特定
a = [1,4,5,3,2,6,0]
b = ['b','e','f','d','c','g','a']
Run Code Online (Sandbox Code Playgroud)
为了b到位,预期的顺序b是在相应位置元件可用a.
输出将是
['a','b','c','d','e','f','g']
Run Code Online (Sandbox Code Playgroud)
尝试其他类似的输入集.
a = [4,0,1,3,2]
b = ['E','A','B','D','C']
Run Code Online (Sandbox Code Playgroud)
我可以得到它使用第三列表完成,甚至sorted()创建第三列表,但关键是要排序b到位
print sorted(b,key=lambda bi : a[b.index(bi)])
Run Code Online (Sandbox Code Playgroud)
问题的核心是如何防止迭代b已经迭代过的项目.