我正在使用Python编写一些加密算法,但我之前从未使用过Python.
首先,看看这段代码然后我会解释这个问题,
x = bytearray(salt[16:])
y = bytearray(sha_512[32:48])
c = [ i ^ j for i, j in zip( x, y ) ]
Run Code Online (Sandbox Code Playgroud)
x和y的值是,
bytearray(b'AB\xc8s\x0eYzr2n\xe7\x06\x93\x07\xe2;')
bytearray(b'+q\xd4oR\x94q\xf7\x81vN\xfcz/\xa5\x8b')
Run Code Online (Sandbox Code Playgroud)
我无法理解代码的第三行.为了理解第三行,我不得不研究这个函数zip(),我遇到了这个问题,
根据这个问题的答案,代码,
zip((1,2,3),(10,20,30),(100,200,300))
Run Code Online (Sandbox Code Playgroud)
会输出,
[(1, 10, 100), (2, 20, 200), (3, 30, 300)]
Run Code Online (Sandbox Code Playgroud)
但是当我试图打印它时
print(zip((1,2,3),(10,20,30),(100,200,300)))
Run Code Online (Sandbox Code Playgroud)
我得到这个输出,
<zip object at 0x0000000001C86108>
Run Code Online (Sandbox Code Playgroud)
为什么我的输出与原始输出不同?
Ash*_*ary 16
在Python 3中zip返回一个迭代器,用于list查看其内容:
>>> list(zip((1,2,3),(10,20,30),(100,200,300)))
[(1, 10, 100), (2, 20, 200), (3, 30, 300)]
Run Code Online (Sandbox Code Playgroud)
c = [ i ^ j for i, j in zip( x, y ) ]是一个列表理解,在这里你迭代从它返回的项目zip并对它们进行一些操作来创建一个新的列表.
| 归档时间: |
|
| 查看次数: |
7537 次 |
| 最近记录: |