我如何访问指数,同时在一个序列上以一个为旋转的序列?
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
当前回答
首先,指数将从 0 到 4. 编程语言开始从 0 计算; 不要忘记,或者你会遇到一个 index-out-of-bounds 例外。
for x in range(0, 5):
请记住,我写了0到5因为旋转停止一个数字之前的最高。
要获得指数的值,使用
list[index]
其他回答
您可以使用列表和插入字母中的表达式来获得解决方案。
这是一个简单的方式:
a=[4,5,6,8]
for b, val in enumerate(a):
print('item #{} = {}'.format(b+1, val))
除了上述所有优秀的答案之外,这里还有解决这个问题的解决方案,当与Pandas系列对象一起工作时。在许多情况下,Pandas系列有自定义/独特的指标(例如,独特的识别线),无法通过列出的()函数访问。
下面我们可以看到,列表()不会给我们所需的结果:
id, x in enumerate(xs): print("id #{} = {}".format(id, x)) 输出: # id #0 = 8 # id #1 = 23 # id #2 = 45
我们可以使用.items( ) 访问一个 pandas 系列的指标,以便使用 A for loop:
对于 id, x 在 xs.items(): 打印("id #{} = {}".format(id, x)) 输出: # id #G923002 = 8 # id #G923004 = 23 # id #G923005 = 45
接入指数与性能平衡方法
在 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)?
for i in range(len(ints)):
print(i, ints[i]) # print updated to print() in Python 3.x+
这里是如何使用 for-in 插槽访问指标和序列元素。
items = [8, 23, 45, 12, 78]
counter = 0
for value in items:
print(counter, value)
counter += 1
结果:
# 0 8
# 1 23
# 2 45
# 3 12
# 4 78
二、使用列表( )方法进行列表。
items = [8, 23, 45, 12, 78]
for i in enumerate(items):
print("index/value", i)
结果:
# index/value (0, 8)
# index/value (1, 23)
# index/value (2, 45)
# index/value (3, 12)
# index/value (4, 78)
3、使用指数和值单独。
items = [8, 23, 45, 12, 78]
for index, value in enumerate(items):
print("index", index, "for value", value)
结果:
# index 0 for value 8
# index 1 for value 23
# index 2 for value 45
# index 3 for value 12
# index 4 for value 78
您可以将指数数字更改到任何增加。
items = [8, 23, 45, 12, 78]
for i, value in enumerate(items, start=1000):
print(i, value)
# 1000 8
# 1001 23
# 1002 45
# 1003 12
# 1004 78
5、自动对比增加与范围(len(...))。
items = [8, 23, 45, 12, 78]
for i in range(len(items)):
print("Index:", i, "Value:", items[i])
结果:
# ('Index:', 0, 'Value:', 8)
# ('Index:', 1, 'Value:', 23)
# ('Index:', 2, 'Value:', 45)
# ('Index:', 3, 'Value:', 12)
# ('Index:', 4, 'Value:', 78)
6、使用内部函数。
items = [8, 23, 45, 12, 78]
def enum(items, start=0):
counter = start
for value in items:
print(counter, value)
counter += 1
enum(items)
结果:
# 0 8
# 1 23
# 2 45
# 3 12
# 4 78
当然,我们不能忘记在旋转时。
items = [8, 23, 45, 12, 78]
counter = 0
while counter < len(items):
print(counter, items[counter])
counter += 1
结果:
# 0 8
# 1 23
# 2 45
# 3 12
# 4 78
8、输出返回发电机对象的声明。
def createGenerator():
items = [8, 23, 45, 12, 78]
for (j, k) in enumerate(items):
yield (j, k)
generator = createGenerator()
for i in generator:
print(i)
结果:
# (0, 8)
# (1, 23)
# (2, 45)
# (3, 12)
# (4, 78)
9. Inline 表达与 for-in loop 和 lambda。
items = [8, 23, 45, 12, 78]
xerox = lambda upperBound: [(i, items[i]) for i in range(0, upperBound)]
print(xerox(5))
结果:
# [(0, 8), (1, 23), (2, 45), (3, 12), (4, 78)]
10. 使用 Python 的 zip() 函数同时插入两个列表。
items = [8, 23, 45, 12, 78]
indices = [0, 1, 2, 3, 4]
for item, index in zip(items, indices):
print("{}: {}".format(index, item))
结果:
# 0: 8
# 1: 23
# 2: 45
# 3: 12
# 4: 78
超過 2 個列表,使用一時 loop 和 iter() 和 next() 方法。
items = [8, 23, 45, 12, 78]
indices = range(len(items))
iterator1 = iter(indices)
iterator2 = iter(items)
try:
while True:
i = next(iterator1)
element = next(iterator2)
print(i, element)
except StopIteration:
pass
结果:
# 0 8
# 1 23
# 2 45
# 3 12
# 4 78