我如何访问指数,同时在一个序列上以一个为旋转的序列?
xs = [8, 23, 45]
for x in xs:
print("item #{} = {}".format(index, x))
所需的产量:
item #1 = 8
item #2 = 23
item #3 = 45
我如何访问指数,同时在一个序列上以一个为旋转的序列?
xs = [8, 23, 45]
for x in xs:
print("item #{} = {}".format(index, x))
所需的产量:
item #1 = 8
item #2 = 23
item #3 = 45
当前回答
正如Python的标准一样,有几种方法可以做到这一点。在所有例子中,假设:lst = [1, 2, 3, 4, 5]
使用列表(被认为是最愚蠢的)
for index, element in enumerate(lst):
# Do the things that need doing here
这也是我认为最安全的选择,因为进入无限回归的机会已经消失了,项目和其指数都保持在变量中,并且没有必要写下任何额外的代码才能访问项目。
创建一个变量以保持指数(使用为)
for index in range(len(lst)): # or xrange
# you will have to write extra code to get the element
创建一个变量以保持指数(使用时)
index = 0
while index < len(lst):
# You will have to write extra code to get the element
index += 1 # escape infinite recursion
总是有另一种方式
如前所述,有其他方法来做到这一点,没有在这里解释,他们甚至可能在其他情况下更适用。
其他回答
根据此讨论:对象列表指数
Loop 对抗 iteration
在指标上旋转的当前字符串使用内置范围功能:
for i in range(len(sequence)):
# Work with index i
超越两个元素和指标可以通过旧的字符或使用新的内置Zip功能实现:
for i in range(len(sequence)):
e = sequence[i]
# Work with index i and element e
或
for i, e in zip(range(len(sequence)), sequence):
# Work with index i and element e
通过PEP 212 - Loop Counter Iteration。
这就足以实现目的:
list1 = [10, 'sumit', 43.21, 'kumar', '43', 'test', 3]
for x in list1:
print('index:', list1.index(x), 'value:', x)
在你的问题上,你写着“我如何访问路径指数,从1到5在这种情况下?”
但是,一个列表的指数从零开始,所以我们需要知道你真正想要的是列表中的每个项目的指数和项目,或者你真的想要从1开始的数字。
首先,为了澄清,列出的函数以序列返回指数和列表中的每个项目的相应项目。
alist = [1, 2, 3, 4, 5]
for n, a in enumerate(alist):
print("%d %d" % (n, a))
此时此刻,上面的结果是:
0 1
1 2
2 3
3 4
4 5
请注意,指数从 0 运行,这种类型的指数是现代编程语言中常见的,包括 Python 和 C。
如果您希望您的路径扩展列表的一部分,您可以使用标准Python合成列表的一部分。 例如,从列表中的第二个项目转向,但不包括最后一个项目,您可以使用
for n, a in enumerate(alist[1:-1]):
print("%d %d" % (n, a))
请注意,再次,输出指数从0运行。
0 2
1 3
2 4
for n, a in enumerate(alist, start=1):
print("%d %d" % (n, a))
其产量为何
1 1
2 2
3 3
4 4
5 5
使用列表以获取与元素的指数,如您引用:
for index, item in enumerate(items):
print(index, item)
请注意,Python的指数从零开始,所以你会得到0到4与上面的。
count = 0 # in case items is empty and you need it after the loop
for count, item in enumerate(items, start=1):
print(count, item)
无线控制流
索引 = 0 # Python 的索引从零开始,以便在项目中的项目: # Python 的索引为“每个”卷印(索引,项目)索引 += 1
指数在范围(列(项目)):印刷(指数,项目(项目))
使用列出的功能
for index, item in enumerate(items, start=0): # default is zero
print(index, item)
得到一个计算
count = 0 # in case items is empty
for count, item in enumerate(items, start=1): # default is zero
print(item)
print('there were {0} items printed'.format(count))
items = ['a', 'b', 'c', 'd', 'e']
enumerate_object = enumerate(items) # the enumerate object
iteration = next(enumerate_object) # first iteration from enumerate
print(iteration)
(0, 'a')
我们可以使用所谓的“序列脱包”来提取这些二重元素:
index, item = iteration
# 0, 'a' = (0, 'a') # essentially this.
>>> print(index)
0
>>> print(item)
a
结论
Python 指数从零开始 若要从一个不可分割的指数中获取这些指数,当您在其上方进行引用时,使用列表函数以异常的方式使用列表(与无包装一起)创建更可读、更可维持的代码:
for index, item in enumerate(items, start=0): # Python indexes start at zero
print(index, item)
很容易从 0 以外的 1 开始:
for index, item in enumerate(iterable, start=1):
print index, item # Used to print in python<3.x
print(index, item) # Migrate to print() after 3.x+