压缩的数组作为<zip object at 0x02B6F198>返回

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,但SortedXX

我有第二个程序,使用该代码,它可以正常工作,但是该程序的大小比原始程序小得多。

Ste*_*ers 6

如果您尝试直接打印压缩列表,则无法使用。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)