跳过列表范围中的项目,然后继续其余项目



我想打印出列表中的一些项目,但我想跳过几个项目,继续处理其余项目。

这是我的代码以及迄今为止我是如何做到这一点的一个例子。

mylist = ["dog","cat","lion","wolf","zebra","monkey","bear","eagle", "bison"]
for item in mylist:
if item == mylist[4]:
continue
if item == mylist[5]:
continue
if item == mylist[6]:
continue
print(item)

如何在不使用多个if语句的情况下执行相同的操作?

您可以使用带索引的for循环(使用索引来检索元素(。

mylist = ["dog", "cat", "lion", "wolf", "zebra", "monkey", "bear", "eagle", "bison"]
for i in range(len(mylist)):
if i in [4, 5, 6]:             # element indices to skip
continue
print(mylist[i])               # procedures desired

另一种方法是修改for循环范围,这样可以节省两行代码来执行if。(这是一个相对糟糕的主意(

mylist = ["dog", "cat", "lion", "wolf", "zebra", "monkey", "bear", "eagle", "bison"]
for i in (mylist[:4]+mylist[7:]):  # exclude the skipped ones
print(mylist[i])               # procedures desired

您可以使用list comprehension并通过使用它们的索引来删除不需要的元素。

mylist = ["dog", "cat", "lion", "wolf", "zebra", "monkey", "bear", "eagle", "bison"]
out = [elem for i, elem in enumerate(mylist) if i not in [4, 5, 6]]
print(out)

输出:

['dog', 'cat', 'lion', 'wolf', 'eagle', 'bison']

您可以使用切片来获取列表的特定索引。试试这个:

for i in mylist[4:]:
print(i)

这将打印第4个索引之后的所有项目。您也可以尝试:

for i in mylist[4:7]:
print(i)

这将打印所有索引4、5和6

这只是解决问题的另一种方法:

mylist = ["dog","cat","lion","wolf","zebra","monkey","bear","eagle", "bison"]
banned=[mylist[4],mylist[5],mylist[6]]
#remove all the items that you  don't want before printing
for thing in banned:
mylist.remove(thing)
#print every element in mylist now:
for animal in mylist:
print (animal)

有多种方法可以做到这一点,其中之一就是我在下面写的:

mylist = ["dog","cat","lion","wolf","zebra","monkey","bear","eagle", "bison"]
skip_list = [my_list[4],my_list[5],my_list[6]]
for item in mylist:
if item in skip_list:
continue
print(item)

在这里,您只需要对要跳过的项目进行skip_list

我不确定是要跳过特定位置上的元素,还是要跳过具有特定内容的元素。对于前者,您可以尝试列表理解

if item in  [mylist[i] for i in [4,5,6]]:
continue

对于后者,您可以将元素放在一个列表中,

if item in  ["zebra","monkey","bear"]:
continue 

这可能是一个解决方案:

mylist = ["dog", "cat", "lion", "wolf", "zebra", "monkey", "bear", "eagle", "bison"]
banned = [mylist[1], mylist[5], mylist[6]]
for item in mylist:
if item in banned:
continue
else:
print(item)

以下是执行相同的另一种方法

>>> mylist = ["dog","cat","lion","wolf","zebra","monkey","bear","eagle", "bison"]
>>> del mylist[4:6]
>>> mylist
['dog', 'cat', 'lion', 'wolf', 'bear', 'eagle', 'bison']

最新更新