Python2中带步长的range循环时如何获取列表对应元素或索引
实现方案
你原来的循环逻辑生成的迭代次数和列表长度完全一致,直接用enumerate或者zip配对即可,两种需求的实现方式如下:
输出带列表元素的格式
list_of_names = ["james", "jack", "jill"] for i, name in zip(range(1, len(list_of_names) * 6 + 1, 7), list_of_names): print((i, i + 6, name))
运行后输出:
(1, 7, 'james') (8, 14, 'jack') (15, 21, 'jill')
输出带列表索引的格式
list_of_names = ["james", "jack", "jill"] for idx, i in enumerate(range(1, len(list_of_names) * 6 + 1, 7)): print((i, i + 6, idx))
运行后输出:
(1, 7, 0) (8, 14, 1) (15, 21, 2)
原理解释
你构造的range(1, len(list_of_names) * 6 + 1, 7)生成的元素个数和list_of_names的长度完全相等,二者一一对应,所以不管是用zip直接配对元素,还是用enumerate获取迭代索引去取列表元素,都不会出现错位问题。Python2中print输出时需要将三个参数用括号包裹为元组,才能输出你需要的带括号的格式。
内容的提问来源于stack exchange,提问作者user001
相关产品推荐
相关产品推荐

