如何在Python中根据索引打印列表的指定元素
报错原因
你注释的print(items[5,6,7])无法运行,是因为Python原生列表不支持直接传入多个索引批量取值,这种写法会把5,6,7解析为元组,而列表不支持元组类型的索引,只有NumPy数组这类扩展结构才支持类似的花式索引写法。
实现方法
根据你的索引是否连续,选对应写法即可:
- 索引连续时直接用列表切片。Python切片遵循左闭右开规则,要取索引为5、6、7的三个元素,切片结束位置要写8。在切片结果前加
*可以把列表拆分为独立的位置参数传给print,输出效果和你之前写print(items[5],items[6])完全一致:
# 取索引5、6、7的连续元素 print(*items[5:8])
- 索引不连续时(比如需要取2、5、9这类间隔的索引),可以遍历你指定的索引列表取出对应元素,再拆包传给print,这种写法连续/不连续索引都通用:
# 自定义需要打印的目标索引 target_ids = [5,6,8,10] print(*(items[i] for i in target_ids))
- 如果需要频繁批量取多索引元素,可以用标准库
operator的itemgetter方法,性能比手写遍历更优:
from operator import itemgetter print(*itemgetter(5,6,7)(items))
读文件注意点
你当前的读文件逻辑会保留每一行末尾的换行符\n,如果打印时发现元素之间多出意外空行,可以在追加元素时只移除行尾的换行符,不破坏行内容本身的前后空格:
items = [] with open('input.txt') as input_file: for line in input_file: items.append(line.rstrip('\n')) # 按需打印对应索引元素即可 print(*items[5:8])
内容的提问来源于stack exchange,提问作者noidea
相关产品推荐
相关产品推荐

