压缩数组 returns 为 <zip object at 0x02B6F198>

zipped array returns as <zip object at 0x02B6F198>

我有两个数组:X = [1,2,3,4,5,3,8]Y = ['S', 'S', 'S', 'S', 'S', 'C', 'C']。当我打印它的压缩数组时,它会生成 <zip object at 0x02B6F198>。这两个数组被压缩的原因是我可以在

行中对 sorted(X) 对应的 Y 进行排序

sortedY = [y for x,y in sorted(zip(X,Y))]

这行代码没有按我想要的方式对 Y 进行排序 (sortedY = ['S','S','C','S','S','S','C']),但 SortedXX 保持相同的排列。

我有第二个程序,我在其中使用了这段代码,它工作正常,但这个程序的大小明显小于原始程序。

如果您尝试直接打印压缩列表,那是行不通的。 zipreturns 一个对象,因此当您尝试打印它时,您只会获得对象方法。如果您想将其视为列表,请应用 returns 列表的操作。

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')]

现在我不确定问题出在哪里,因为你提供的应该有效

sortedY = [y for x,y in sorted(zip(X,Y))]
print(sortedY)

# Output
['S', 'S', 'C', 'S', 'S', 'S', 'C']

如您所见,它对 Y 进行排序,对应于已排序的 X

print(sorted(zip(X,Y)))

#Output (X, Y)
[(1, 'S'), (2, 'S'), (3, 'C'), (3, 'S'), (4, 'S'), (5, 'S'), (8, 'C')]