当前位置: 首页 > 知识库问答 >
问题:

在循环中跳过一组值(在数组中)-Python3

姬昊焱
2023-03-14

我有一个循环来读取数据,但编号不是连续的。因此,我想跳过特定的值。但我只知道如何跳过一个,而不是一组值。这是我的示例代码:

for n in [x for x in range(2,m) if x!=9]:
    if n < 10:
        stationsnr = '00'+np.str(n)
    elif n < 100:
        stationsnr = '0'+np.str(n)
    else:
        stationsnr = np.str(n)

但是我需要的不是“x!=9”,而是像“如果x!=其中一个值[9,10,12,16,…](编辑:这些值存储在列表中)。有什么建议吗?

共有3个答案

陈斌蔚
2023-03-14

你可以用-

if x is not in [your list]

但是使用set比使用列表更好,因为集合的查找时间是O(1),这是常数,因为它们是散列的。

所以你的代码可以变成-

if x is not in (your set)

此外,列表的追加时间是O(N),而集合的追加时间是O(1),因此插入到集合中的时间也会更快(从集合中删除的时间也会更快)

惠洛华
2023-03-14

可以在for循环中使用enumerate()函数。它返回列表中的元素,就像普通的一样,但也返回索引位置。例如:

indices_to_avoid = [1,4,6]  # indices to skip over
for item, idx in enumerate(range(2, m)):
    if idx not in indices_to_avoid:
        do_something()

就像上面的答案所说的,你也可以使用列表理解,但是如果你有一长串排除,列表理解可能会变得冗长。我认为冗长的列表理解很难阅读,而且会比简单的for循环更容易混淆,尤其是如果列表comp进入下一行。

吴欣悦
2023-03-14

您可以测试该值是否为集合的成员:

[... if x not in {9, 10, 12, 16, }]

集合成员资格测试是O(1)恒定时间(太快了!)。

 类似资料:
  • 问题内容: 我正在尝试使用for循环跳过值。就像是 有什么建议?谢谢! 问题答案: 在循环开始时使用它: 这比仅继续进行要好得多。您不想迭代128到159。你会浪费时间。

  • 假设您有一个数组,其中包含一周中的几天: 现在假设你有一个数组,它记录一年中的每一个数字日,这个数组由366个元素组成。 有没有可能写一个循环或一些东西,当在天数组中循环时,它重置回星期一以保持输出看起来像: 周一:1周二:2周三:3周四:4周五:5周六:6周日:7周一:8周二:9 ect一直到366

  • 问题内容: 我有一个这样的多维数组: 我想这样的html输出: - 活动1 艺术家1 艺术家1 desc http : //www.artist1.com,http://www.artist1-2.com ARTIST 8 artist 8 desc http://www.artist8.com ARTIST 5 artist 5 desc http://www.artist5.com - 活动2

  • 到目前为止,这就是我的答案,但从逻辑上讲,我的答案对于findNextCity方法似乎是错误的。此外,我甚至不知道如何处理问题的第二部分(以下)。 我应该遍历cityQueue中的每个元素,使用下一种方法计算的欧几里德距离(distbetweencies),确定哪个元素最接近当前城市(从第一个参数)。我必须忽略已经标记在堆栈中或堆栈中的城市以及当前城市本身(否则,城市将始终是离自身最近的城市!)。

  • 联机-节点1,节点2离线-节点3,节点4未知-节点5,节点6