You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何使用Python Zip函数得到的结果与预期不符?

问题:Python zip(*fruits) 结果不符合预期的原因

运行以下Python脚本:

fruits = ["apple", "banana", "orange"]
var = zip(*fruits)
print(list(var))

得到的结果为:

[('a', 'b', 'o'), ('p', 'a', 'r'), ('p', 'n', 'a'), ('l', 'a', 'n'), ('e', 'n', 'g')]

但预期的结果应该是:

[('a','p','p','l','e'), ('b','a','n','a','n','a'), ('o','r','a','n','g','e')]

请问这是什么原因?


解答

为什么zip(*fruits)得到当前结果?

  1. *fruits是解包操作:它会把列表["apple", "banana", "orange"]拆成三个独立的可迭代对象,等价于调用zip("apple", "banana", "orange")
  2. zip()的核心逻辑是按索引位置聚合元素:它会依次从每个输入的可迭代对象中取出对应位置的元素,组成新的元组。比如先取三个字符串的第0位字符'a'、'b'、'o'组成第一个元组;再取第1位的'p'、'a'、'r'组成第二个元组,直到最短的可迭代对象(这里是长度为5的"apple")遍历完成,所以最终得到的是按「列」组合的结果。

如何得到预期结果?

你想要的是把每个字符串单独转换为字符元组,不需要使用zip(),直接通过列表推导式结合tuple()函数处理每个元素即可:

fruits = ["apple", "banana", "orange"]
result = [tuple(fruit) for fruit in fruits]
print(result)

运行后输出:

[('a', 'p', 'p', 'l', 'e'), ('b', 'a', 'n', 'a', 'n', 'a'), ('o', 'r', 'a', 'n', 'g', 'e')]

内容的提问来源于stack exchange,提问作者Jean

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 17:56:04