cal*_*ous 2 arrays sorting zip python-3.x
我有两个数组:X = [1,2,3,4,5,3,8]和Y = ['S', 'S', 'S', 'S', 'S', 'C', 'C']。当我打印此压缩数组时,将产生<zip object at 0x02B6F198>。之所以这两个阵列是压缩是,所以我可以排序Y对应于sorted(X)在该行
sortedY = [y for x,y in sorted(zip(X,Y))]
这行代码并不像我想要的那样(sortedY = ['S','S','C','S','S','S','C'])排序Y,但SortedX与X。
我有第二个程序,使用该代码,它可以正常工作,但是该程序的大小比原始程序小得多。
如果您尝试直接打印压缩列表,则无法使用。zip返回一个对象,因此当您尝试打印该对象时,您只需获取对象方法。如果您希望将其视为列表,请应用返回列表的操作。
X = [1,2,3,4,5,3,8]
Y = ['S', 'S', 'S', 'S', 'S', 'C', 'C']
# Some Simple Methods Include
print(list(zip(X, Y)))
print([i for i in zip(X, Y)])
# Output
[(1, 'S'), (2, 'S'), (3, 'S'), (4, 'S'), (5, 'S'), (3, 'C'), (8, 'C')]
Run Code Online (Sandbox Code Playgroud)
现在我不确定问题是什么,因为您提供的内容应该可以正常工作
sortedY = [y for x,y in sorted(zip(X,Y))]
print(sortedY)
# Output
['S', 'S', 'C', 'S', 'S', 'S', 'C']
Run Code Online (Sandbox Code Playgroud)
如您所见,它对Y的排序与对X的排序相对应
print(sorted(zip(X,Y)))
#Output (X, Y)
[(1, 'S'), (2, 'S'), (3, 'C'), (3, 'S'), (4, 'S'), (5, 'S'), (8, 'C')]
Run Code Online (Sandbox Code Playgroud)