对 "one-line for loops" 使用枚举
Using enumerate for "one-line for loops"
我有一个像这样的列表
my_id = 3
Word IDs: [None, 0, 1, 2, 3, 3, 3, 4, None]
我想列出上面列表中的所有索引,它们对应的值等于my_id
我想写一个单行for循环。这是行不通的。有什么方法可以把它写成“一行 for 循环”吗?
我的方式:
list_of_word_ids = [i for enumerate(i,_id) in inputs if _id == id_word ]
在这种情况下我想要的输出是
4, 5, 6
enumerate
returns 一个带有计数器的元组。您可以解压元组并检查秒值是否等于 my_id
Word_IDs= [None, 0, 1, 2, 3, 3, 3, 4, None]
list_of_word_ids = [i for i,j in enumerate(Word_IDs) if j == my_id]
一行代码会很麻木:
np.where(np.array(Word_IDs) == 3)[0].tolist()
结果:
[4, 5, 6]
我有一个像这样的列表
my_id = 3
Word IDs: [None, 0, 1, 2, 3, 3, 3, 4, None]
我想列出上面列表中的所有索引,它们对应的值等于my_id
我想写一个单行for循环。这是行不通的。有什么方法可以把它写成“一行 for 循环”吗?
我的方式:
list_of_word_ids = [i for enumerate(i,_id) in inputs if _id == id_word ]
在这种情况下我想要的输出是
4, 5, 6
enumerate
returns 一个带有计数器的元组。您可以解压元组并检查秒值是否等于 my_id
Word_IDs= [None, 0, 1, 2, 3, 3, 3, 4, None]
list_of_word_ids = [i for i,j in enumerate(Word_IDs) if j == my_id]
一行代码会很麻木:
np.where(np.array(Word_IDs) == 3)[0].tolist()
结果:
[4, 5, 6]