当前位置: 首页 > 知识库问答 >
问题:

python中zip函数的奇怪行为[重复]

柴兴贤
2023-03-14
a = [1,2]
b = ["cat", "dog"]
ab = zip(a, b)

for element in ab:
    print(element)

(1, 'cat')
(2, 'dog')

但是,我犯了一个错误,写了这样一段话:

for element in ab:
    print(ab)

然后我写道:

for element in ab:
    print(element)

没有打印任何输出,所以我的问题是,基本上,为什么?

共有1个答案

黄浩涆
2023-03-14

这是因为a和b的类型是list,而ab是一个zip对象,所以行为方式不一样。尝试将ab转换为列表

AB = list(ab)
print(AB)
 类似资料:
  • 问题内容: 我不了解python中列表的行为: 为什么一个元素的分配影响另一个元素?感谢您的回答! 问题答案: 当您将一个列表相乘时,它会复制对该列表的引用,但不会创建该列表的副本。由于列表是可变的,因此在更改列表时,所有对其引用的引用都会更改。 用ASCII术语来说: 您可以清楚地看到更改list3将同时影响两个位置。 如果要创建可变长列表而不复制引用,则应执行以下操作: 在这里,我们使用列表理

  • 问题内容: 我有以下简单代码: 正如我的python知识所期望的那样,输出为3-整个列表将包含的最后一个值。但是,这在内部如何运作? AFAIK,python变量只是对对象的引用,因此第一个闭包必须包含对象的第一个引用-并且此对象肯定是1,而不是3 O_O。python闭包如何将变量本身而不是对象作为变量引用的对象?它是否将变量名另存为纯文本,一些“对变量的引用”或什么? 问题答案: 闭包不是指

  • 我有以下异步代码示例: 和两个测试: 下面是运行separatley和后chrome控制台中的结果: 问题:为什么我们在(test2)中使用函数,得到的结果与我们直接复制粘贴到(test1)中的结果不同? (上面的例子很抽象,但是我发现这种行为调用ajax请求(而不是和)在我的应用程序中非常重要(请求必须在请求之前...))

  • 为什么第一次计算的结果比第二次计算的结果大? 结果:

  • null 结果将是0xFFFFFFFFFFFFFFFF0000(正确,寄存器溢出,但我们只更改2字节) 结果将为0x00000000000000000000(WTF?,寄存器溢出,但结果更改所有8个字节而不是4个字节。为什么是0x00000000000000,而不是0xFFFFFF00000000)

  • 我有以下代码来解析一个JSON文件: 要处理以下JSON文件: 如果我执行此代码,我将收到以下错误: 所以我开始一步一步地调试应用程序,看看part processing()中的哪个代码部分抛出了这个异常。令人惊讶的是,那里的所有代码都正常执行:没有抛出异常,也没有返回结果I except。 更让我惊讶的是,当我稍微改变第一种方法的代码时,它可以在不产生异常的情况下工作。 我不知道println方