如何在Python中通过for…in循环创建元组(tuple)?
解决生成器转元组及后续操作的问题
你这里用的是生成器表达式(带圆括号的语法),所以返回的是生成器对象,而不是元组。生成器是惰性求值的——它不会一次性把所有元素加载到内存里,只会在你迭代它的时候才生成元素,这就是为什么你看到的是<generator object <genexpr> at 0x00000198CAC95A40>这种输出。
如何得到0到14的元组
有两种直接的方法可以生成目标元组:
- 把生成器表达式传入
tuple()函数:x = tuple(i for i in range(15)) - 更简洁的写法:直接将
range()对象转换为元组(因为range本身就是一个可迭代序列):x = tuple(range(15))
执行后x就会是(0, 1, 2, ..., 14),完全符合你想要的元组形式。
关于其他相关操作的建议
如果后续需要对序列进行修改元素、添加/删除元素这类操作,元组是不可变类型,无法完成这些操作。这种情况下,你可以把序列转换成列表:
x = list(range(15))
列表支持所有常见的可变序列操作,比如:
- 修改元素:
x[3] = 99 - 添加元素:
x.append(15) - 排序:
x.sort(reverse=True) - 切片:
x[2:8]
如果只是需要索引、切片、遍历这类只读操作,元组就足够用了,而且元组比列表更节省内存,访问速度也更快。
内容的提问来源于stack exchange,提问作者ayushgp
相关产品推荐
相关产品推荐

