zip函数输出错误

2024-09-28 23:31:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用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 function help with tuples

根据这个问题的答案, 密码

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>

为什么我的输出和原来的不同?


Tags: 代码in算法密码forabzipsalt
1条回答
网友
1楼 · 发布于 2024-09-28 23:31:35

在Python 3中,^{}返回一个iterator,使用list查看其内容:

>>> 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 ) ]是一个list comprehension,在这里,您将迭代从zip返回的项,并对它们执行一些操作以创建一个新列表。

相关问题 更多 >