我有一个字符串“列表”,我需要获得列表中所有元素的索引数组,这些元素与模式相同。
我不需要使用python列表,我可以使用其他数据结构,但我不知道哪个。
示例:
my_list = ['foo', 'bar', 'hello', 'foo', 'goodbye']
pattern = 'foo'
我想要的结果是:
my_mask = [True, False, False, True, False]
所以我可以用这个掩码索引一个numpy数组:
selected_items = my_array[my_mask]
然而,有一个列表并做:
my_list == pattern
不返回掩码,只是假。
答案 0 :(得分:2)
以下是$var = Get-Content -Path C:\testfiles\1.txt
$var.Substring(20,10)
解决方案:
numpy
答案 1 :(得分:1)
你必须自己进行循环,Python容器不支持向量化操作,所以类似于:
[x == pattern for x in my_list]
答案 2 :(得分:0)
您可以使用列表理解来获取所需的列表:
>>> my_list = ['foo', 'bar', 'hello', 'foo', 'goodbye']
>>> pattern = 'foo'
>>> [item==pattern for item in my_list]
[True, False, False, True, False]
这里我在my_list
列表上进行迭代,并用pattern
检查每个元素的相等性,并将结果(True / False)存储在通过List Comprehension创建的新列表中。
答案 3 :(得分:0)
您可以使用它来创建所需的列表:
mask = [x==pattern for x in my_list]
创建
[True, False, False, True, False]
或者您可以使用numpy数组,它支持==
运算符,就像您希望将它用于列表一样:
my_list = np.array(my_list)
my_list == pattern
>>>array([ True, False, False, True, False])
但是如果你想要一个索引列表,那么你可以这样做:
[i for i,x in enumerate(my_list) if x==pattern]
>>>[0, 3]
enumerate
会从您的列表中创建(index, element_at_index)
元组。在代码中i
是索引,x
是该索引处的元素。如果elment eqauls模式
i