Python字符串处理列表

时间:2018-08-18 16:01:37

标签: python list-comprehension

考虑列表['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)

是否有更有效的解决方案?

5 个答案:

答案 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的列表元素的索引。