我如何访问指数,同时在一个序列上以一个为旋转的序列?
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
当前回答
如果我要重定数 = [1, 2, 3, 4, 5] 我会
for i, num in enumerate(nums, start=1):
print(i, num)
或得到长度为 l = len(数字)
for i in range(l):
print(i+1, nums[i])
其他回答
使用内置函数列():
for idx, x in enumerate(xs):
print(idx, x)
它是非皮托尼的手动索引通过 i 在范围(len(xs)): x = xs(i) 或手动管理一个额外的状态变量。
查看 PEP 279 更多信息
根据此讨论:对象列表指数
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。
接入指数与性能平衡方法
在 Python 3.7 中访问列表指数的最快方法是使用小、中等和大列表的列表方法。
请在下面的代码样本中查看可以使用的不同方法,以便在列表和访问指数值和其性能测量(我认为这对您有用):
# Using range
def range_loop(iterable):
for i in range(len(iterable)):
1 + iterable[i]
# Using enumerate
def enumerate_loop(iterable):
for i, val in enumerate(iterable):
1 + val
# Manual indexing
def manual_indexing_loop(iterable):
index = 0
for item in iterable:
1 + item
index += 1
查看下面的每个方法的性能测量:
from timeit import timeit
def measure(l, number=10000):
print("Measure speed for list with %d items" % len(l))
print("range: ", timeit(lambda :range_loop(l), number=number))
print("enumerate: ", timeit(lambda :enumerate_loop(l), number=number))
print("manual_indexing: ", timeit(lambda :manual_indexing_loop(l), number=number))
# Measure speed for list with 1000 items
measure(range(1000))
# range: 1.161622366
# enumerate: 0.5661940879999996
# manual_indexing: 0.610455682
# Measure speed for list with 100000 items
measure(range(10000))
# range: 11.794482958
# enumerate: 6.197628574000001
# manual_indexing: 6.935181098000001
# Measure speed for list with 10000000 items
measure(range(10000000), number=100)
# range: 121.416859069
# enumerate: 62.718909123
# manual_indexing: 69.59575057400002
因此,使用列出的方法是当指数需要时最快的 iteration 方法。
下面添加一些有用的链接:
在 Python 2.X 中,范围和 xrange 函数有什么区别? 使用列表或使用 xrange 在 Python 中使用列表更快的是什么? 范围(len(list)) 或列表(list)?
在你的问题上,你写着“我如何访问路径指数,从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
一个具有“对手”变量的圈子设置为一个启动器,这将是一个参数,在格式化行,作为项目号。
当我们通过“i”访问列表时,“i”被格式化为项目价格(或它是什么)。
listos = [8, 23, 45, 12, 78]
counter = 1
for i in listos:
print('Item #{} = {}'.format(counter, i))
counter += 1
出口:
Item #1 = 8
Item #2 = 23
Item #3 = 45
Item #4 = 12
Item #5 = 78