Python—区分列表中的项索引和FOR循环中的项内容的方法?

Python—区分列表中的项索引和FOR循环中的项内容的方法?,python,list,loops,for-loop,duplicates,Python,List,Loops,For Loop,Duplicates,例如,如果我想循环浏览一个列表并对除最终列表项之外的所有列表项执行一些操作,我可以这样做: z = [1,2,3,4,2] for item in z: if item != z[-1]: print z.index(item) 但不是得到输出…01 2 3,我得到 …0 2 3 当列表中存在相同的项时,是否有一种方法可以对列表中除最后一项以外的所有项执行操作,而不使用范围为lenlist-1的“x”的解决方案?也就是说,我想继续使用列表中的项 非常感谢

例如,如果我想循环浏览一个列表并对除最终列表项之外的所有列表项执行一些操作,我可以这样做:

z = [1,2,3,4,2]
for item in z:
    if item != z[-1]:        
        print z.index(item)
但不是得到输出…01 2 3,我得到 …0 2 3

当列表中存在相同的项时,是否有一种方法可以对列表中除最后一项以外的所有项执行操作,而不使用范围为lenlist-1的“x”的解决方案?也就是说,我想继续使用列表中的项

非常感谢

您可以使用:

for index, item in enumerate(your_list):
    do_something
for index, item in enumerate(z):
    if index != len(z)-1:
        print index
[z.foo代表z[:-1]

使用切片:

for item in z[:-1]:
    # do something
把它放在一个模块中,并在需要的地方使用它

在您的情况下,您应该:

for item in all_but_last(z):

哇,你们真是太快了。非常感谢你们所有人!或者按照其他答案中的建议将其与切片结合起来:如果您使用enumaratez[:-1]您可以不用enumeratez而不用if语句。您可以通过在itertools模块中使用islice方法来减少创建切片的循环开销,如下所示:对于itertools.islicez中的项,0,lenz-1:
for item in all_but_last(z):