【问题标题】:Printing a tuple in Python using both "for" loop and unpacking with star operator (*)在 Python 中使用“for”循环和使用星号运算符 (*) 解包来打印元组
【发布时间】:2020-11-11 14:14:45
【问题描述】:

我正在尝试以两种不同的方式在以下代码中打印“结果”元组的项目:

  • 使用“for”循环
  • 在 print() 方法中使用星号运算符

在输出中,字符串“参考点”应该将两种方式的结果分开。

animals = {"dog", "cat", "pig"}
numbers = (1, 2, 3)
column = ['a', 'b', 'c']
result = zip(animals, column, numbers)

#first way of printing the items in the result tuple
for item in result:
    print(item)

print('\nreference point\n')

#second way of printing the items in the result tuple
print(*result, sep="\n")

但是,无论是哪种方式(“for”循环或星号运算符),代码都只输出第一个结果(“参考点”之前),如下所示:

('dog', 'a', 1)
('pig', 'b', 2)
('cat', 'c', 3)

reference point

有谁知道为什么“结果”元组的项目只打印一次以及如何解决这个问题?我正在寻找如下输出:

('dog', 'a', 1)
('pig', 'b', 2)
('cat', 'c', 3)

reference point

('dog', 'a', 1)
('pig', 'b', 2)
('cat', 'c', 3)

【问题讨论】:

    标签: python for-loop printing tuples argument-unpacking


    【解决方案1】:

    zip构造的迭代器在第一次迭代时就用完了,需要重新构建或者做成result = list(zip(animals, column, numbers))这样的列表

    【讨论】:

    • 谢谢,它现在运行良好。还有一个问题:在没有将迭代器转换为列表的情况下,我还尝试打印它(例如 print(result)),我得到以下输出:。由于我刚开始使用 Python,我想知道为什么如果迭代器用尽了,它不只是打印一个空白。
    • 那是打印出来的内存地址,大致相当于hex(id(result))。不过你可能永远不需要它
    • 我明白了。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-05
    • 1970-01-01
    • 2017-08-21
    • 2021-07-18
    • 1970-01-01
    • 2013-02-20
    相关资源
    最近更新 更多