Я пишу криптографический алгоритм с использованием Python, но я никогда раньше не работал с Python.zip-функция, дающая неверный вывод
Прежде всего, обратите внимание на этот код, то я бы объяснить вопрос,
x = bytearray(salt[16:])
y = bytearray(sha_512[32:48])
c = [ i^j for i, j in zip(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>
Почему мой выход отличается от оригинального производства?
@Xufyan Это список понимания. –
@ Xufyan Читать: [Итератор] (http://docs.python.org/2/glossary.html#term-iterator). '<объект zip на 0x0000000001C86108>' является не чем иным, как представлением 'repr' объекта итератора zip. –
Я замечаю, что в новой версии Python большинство встроенных функций возвращает итератор вместо последовательности. верный? –