Python zip函数输出不正确

Python zip函数输出不正确,python,python-3.x,Python,Python 3.x,我正在使用Python编写一些加密算法,但我以前从未使用过Python 首先,看看这个代码,然后我会解释这个问题 x = bytearray(salt[16:]) y = bytearray(sha_512[32:48]) c = [ i ^ j for i, j in zip( x, y ) ] x和y的值为 bytearray(b'AB\xc8s\x0eYzr2n\xe7\x06\x93\x07\xe2;') bytearray(b'+q\xd4oR\x94q\xf7\x81vN\xf

我正在使用Python编写一些加密算法,但我以前从未使用过Python

首先,看看这个代码,然后我会解释这个问题

x = bytearray(salt[16:])
y = bytearray(sha_512[32:48])
c = [  i ^ j for i, j in zip( x, y )  ]
x和y的值为

bytearray(b'AB\xc8s\x0eYzr2n\xe7\x06\x93\x07\xe2;')
bytearray(b'+q\xd4oR\x94q\xf7\x81vN\xfcz/\xa5\x8b')
我无法理解代码的第三行。为了理解第三行,我必须研究函数
zip()
, 我遇到这个问题,

根据这个问题的回答,, 代码

zip((1,2,3),(10,20,30),(100,200,300))
将输出

[(1, 10, 100), (2, 20, 200), (3, 30, 300)]
但当我试图打印它时

print(zip((1,2,3),(10,20,30),(100,200,300)))
我得到了这个输出

<zip object at 0x0000000001C86108>

为什么我的输出与原始输出不同?

在Python 3中,返回一个,使用
列表查看其内容:

>>> list(zip((1,2,3),(10,20,30),(100,200,300)))
[(1, 10, 100), (2, 20, 200), (3, 30, 300)]

c=[i^j for i,j in-zip(x,y)]
是a,在这里,您迭代从
zip
返回的项目,并对它们执行一些操作以创建一个新列表。

@Xufyan这是一个列表理解。@Xufyan Read:
不过是zip迭代器对象的
repr
表示。我注意到,在新版Python中,大多数内置函数都返回迭代器,而不是序列。正确吗?@GrijeshChauhan是的,
map
现在也返回一个迭代器,
xrange()
被重命名为
range()
,py2.x的
range()
不再可用。@GrijeshChauhan文档是了解库的最佳资源,我想没有一本书正确地介绍了这些库。顺便说一句,为了学习一些新的技巧,我建议:,这本书的python2版本也可用。