考虑列表['010','10','00'];我正在尝试确定包含字符“ 1”的索引位置。由于元素1的“ 010”在索引1处包含“ 1”,元素2的“ 10”在索引0处包含“ 1”,因此,预期结果为[0,1]。
sample = ['010','10','00']
result = set()
for e in sample:
for i,c in enumerate(list(e)):
if c == '1':
result.add(i)
是否有更有效的解决方案?
答案 0 :(得分:0)
怎么样:
sample = ['010','10','00']
result = set()
for i,e in enumerate(sample):
if '1' in e:
result.add(i)
答案 1 :(得分:0)
您可以使用info (*array)[10][10]=malloc(N*sizeof(*array)); //declares pointer to 2d array
方法来更有效地查找字符串中子字符串的索引。并且由于str.find()
在找不到给定字符串中的子字符串时会返回str.find()
,因此您可以在随后的结果集中删除-1
:
-1
这将输出:
print(set(s.find('1') for s in sample) - {-1})
编辑:如果要查找字符串中子字符串的所有索引,则可以改用{0, 1}
,并将结果集与re.finditer
合并:
functools.reduce
答案 2 :(得分:0)
您的答案看起来不错。您打算获取set()还是list []?
假设您要获取列表,我对您的代码做了一些更改。 看一下这个。
sample = ['010','10','00']
result = list()
for e in sample:
for i,c in enumerate(list(e)):
if c == '1':
result.append(i)
print(result)
答案 3 :(得分:0)
好的,再试一次:
sample = ['010','10','00']
result = set()
for e in sample:
i = e.find('1')
if i != -1:
result.add(i)
答案 4 :(得分:0)
这是处理python列表的常用方法。
#include "boost/math/special_functions/hankel.hpp"
编辑:更新代码以获取列表元素中索引为1的列表,而不是列表中包含1的列表元素的索引。