在运行时修改列表 start_index python

Modify start_index of list at runtime python

我想知道是否可以在遍历列表时修改列表 start_index 的值。

到目前为止我注意到的是代码

index = 0
l = ['1','2','3']
for elem in l[index:]:
    print(elem, index)

在遍历循环时始终打印出值 0。

我试过像这样修改循环内的值:

for elem in l[index:]:
    print(elem, index)
    index = index+1

并且索引的值被正确打印出来,但我可以再次看到列表中的每个元素。 我试图根据其他一些计算跳过列表的元素(这不仅仅是希望 1 个元素,事实上我不能使用表单

l[start_index:end_index:count]

因为每次迭代计数可能不同,这就是为什么我需要自己设置它。)

有可能实现这样的目标吗? 谢谢

我认为您正在寻找“enumerate”。

例如:

print(list(enumerate(["apples", "and", "oranges"])))

...输出:

[(0, 'apples'), (1, 'and'), (2, 'oranges')]

然后如果你想从 10 开始数,它有一个参数可以让你这样做:

print(list(enumerate(["apples", "and", "oranges"], 10)))

输出:

[(10, 'apples'), (11, 'and'), (12, 'oranges')]

或者,如果您在迭代中跳跃,根据一些计算,您可能需要:

L = [...]
i = 0
while i is not None:
    do_something_with(L[i])
    i = my_calculation(i)

所以这里的基本思想是——您使用 L 作为数据列表,i 作为数据的索引,然后当 my_calculation returns None (而不是下一个索引,...),您退出循环。

对于某些对象,您可以使用 next() 来跳过元素

f = open("filename.txt")

# skip two lines before loop
next(f)
next(f)

for line in f:
    print(line)
    # skip one line in loop
    next(f)

但是当您在最后一个元素上使用 `next() 并且没有下一个元素时,您可能必须使用 try/except 来捕获错误 StopIteration

try:

    # skip two lines before loop
    next(f)
    next(f)

    for line in f:
        print(line)
        # skip one line in every loop
        next(f)

except StopIteration:
    pass

对于某些对象,您可以使用 iter() 创建迭代器,然后您可以使用 next() 跳过项目。

index = 0

l = ['1','2','3','4','5']
it = iter(l[index:])

try:

    for item in it:
        print(item)
        # skip two items in every loop
        next(it)
        next(it)

except StopIteration:
    pass

您可以使用 for 循环和 if/else 跳过更多元素

index = 0

l = ['1','2','3','4','5']
it = iter(l[index:])

try:

    for item in it:
        print(item)
        if some_condition:
            # skip two items 
            for _ in range(2):
                next(it) 

except StopIteration:
    pass

但使用while Truewhile index < ...并手动更改index并使用它来获取值可能更容易。

或者使用 enumerateif index condition: continue 来跳过某些索引的循环。