我有一个循环来读取数据,但编号不是连续的。因此,我想跳过特定的值。但我只知道如何跳过一个,而不是一组值。这是我的示例代码:
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,…](编辑:这些值存储在列表中)。有什么建议吗?
你可以用-
if x is not in [your list]
但是使用set
比使用列表更好,因为集合的查找时间是O(1),这是常数,因为它们是散列的。
所以你的代码可以变成-
if x is not in (your set)
此外,列表的追加时间是O(N),而集合的追加时间是O(1),因此插入到集合中的时间也会更快(从集合中删除的时间也会更快)
可以在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进入下一行。
问题内容: 我正在尝试使用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