zip函数给出错误的输出

发布于 2021-01-29 17:40:40

我正在使用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函数帮助元组

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

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>

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

关注者
0
被浏览
49
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    在Python
    3中zip返回一个迭代器,用于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 ) ]是一个列表解析,在此您要迭代从返回的项目zip并对其进行一些操作以创建新列表。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看