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

Python 2/3如何将列表转换为成对元组?

嘿,这个问题我熟!把列表里的元素两两打包成元组,Python里有好几种简单的方法,而且大部分在Python 2和3里都能直接用,我给你列几个常用的:

方法一:切片 + zip函数(最简洁)

这是最常用的写法,利用切片分别取出奇数位和偶数位的元素,再用zip把它们一一配对:

lst = [1, 2, 3, 4, 5, 6]
# Python 3需要用list()把zip返回的迭代器转成列表,Python 2直接zip()就返回列表
result = list(zip(lst[::2], lst[1::2]))
print(result)  # 输出 [(1, 2), (3, 4), (5, 6)]

小提示:如果是Python 2,去掉list()也能正常运行,不过加上的话也不会出错,能更好地兼容两个版本。

方法二:手动循环构建(最直观)

如果你刚学Python,想搞清楚底层逻辑,手动循环的方式更易懂:

lst = [1, 2, 3, 4, 5, 6]
result = []
# 步长设为2,每次跳两个元素
for i in range(0, len(lst), 2):
    # 取当前索引和下一个索引的元素组成元组,加入结果列表
    result.append((lst[i], lst[i+1]))
print(result)  # 输出 [(1, 2), (3, 4), (5, 6)]

这个写法在Python 2和3里完全一致,没有兼容性问题,逻辑也一目了然。

方法三:列表推导式(紧凑版循环)

要是你喜欢用一行代码解决问题,列表推导式是个完美的选择,本质和手动循环一样,但写法更简洁:

lst = [1, 2, 3, 4, 5, 6]
result = [(lst[i], lst[i+1]) for i in range(0, len(lst), 2)]
print(result)

同样,这个写法在两个Python版本里都能正常运行。

额外补充:如果你的列表长度是奇数(比如[1,2,3,4,5]),上面的方法需要调整:zip会自动忽略最后一个未配对的元素,而循环/推导式会因为索引越界报错。这时候可以加个判断处理,比如:

lst = [1,2,3,4,5]
result = []
for i in range(0, len(lst), 2):
    if i+1 < len(lst):
        result.append((lst[i], lst[i+1]))
    else:
        # 可以选择把单个元素做成元组,或者直接忽略
        result.append((lst[i],))
print(result)  # 输出 [(1,2), (3,4), (5,)]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:45:40