在python中,我该怎么做:
for car in cars:
# Skip first and last, do work for rest
Run Code Online (Sandbox Code Playgroud)
Abh*_*jit 322
要跳过Python中的第一个元素,您可以简单地编写
for car in cars[1:]:
# Do What Ever you want
Run Code Online (Sandbox Code Playgroud)
或跳过最后一个元素
for car in cars[:-1]:
# Do What Ever you want
Run Code Online (Sandbox Code Playgroud)
您可以将此概念用于任何序列.
agf*_*agf 236
其他答案仅适用于序列.
对于任何可迭代的,跳过第一项:
itercars = iter(cars)
next(itercars)
for car in itercars:
# do work
Run Code Online (Sandbox Code Playgroud)
如果你想跳过最后一个,你可以这样做:
itercars = iter(cars)
# add 'next(itercars)' here if you also want to skip the first
prev = next(itercars)
for car in itercars:
# do work on 'prev' not 'car'
# at end of loop:
prev = car
# now you can do whatever you want to do to the last one on 'prev'
Run Code Online (Sandbox Code Playgroud)
Roe*_*erg 24
跳过第一项的最佳方法是:
from itertools import islice
for car in islice(cars, 1, None):
# do something
Run Code Online (Sandbox Code Playgroud)
在这种情况下,islice的起始点为1,结束点为None,表示迭代器的结束.
为了能够从可迭代的末尾跳过项目,您需要知道它的长度(总是可以列出一个列表,但不一定是您可以迭代的所有内容).例如,islice(cars,1,len(cars)-1)将跳过汽车列表中的第一个和最后一个项目.
Sve*_*ach 23
这是一个更通用的生成器函数,它从可迭代的开头和结尾跳过任意数量的项:
def skip(iterable, at_start=0, at_end=0):
it = iter(iterable)
for x in itertools.islice(it, at_start):
pass
queue = collections.deque(itertools.islice(it, at_end))
for x in it:
queue.append(x)
yield queue.popleft()
Run Code Online (Sandbox Code Playgroud)
用法示例:
>>> list(skip(range(10), at_start=2, at_end=2))
[2, 3, 4, 5, 6, 7]
Run Code Online (Sandbox Code Playgroud)
for item in do_not_use_list_as_a_name[1:-1]:
#...do whatever
Run Code Online (Sandbox Code Playgroud)
例子:
mylist=['one','two','three','four','five']
for i in mylist[1:]:
print(i)
Run Code Online (Sandbox Code Playgroud)
在python索引从0开始,我们可以使用切片运算符在迭代中进行操作。
for i in range(1,-1):
Run Code Online (Sandbox Code Playgroud)
这是我的首选。它不需要在循环中添加太多内容,并且只使用内置工具。
从...来:
for item in my_items:
do_something(item)
Run Code Online (Sandbox Code Playgroud)
到:
for i, item in enumerate(my_items):
if i == 0:
continue
do_something(item)
Run Code Online (Sandbox Code Playgroud)