python - 子字符串中的模式限制 - Python

标签 python list substring

我在 glassdoor 中发现了一个问题。我没有额外的说明

输入:一个 int 数组 [1,0,0,1,1,0,0,1,0,1,0,0,0,1] 你必须想出一个程序,根据模式给出数组的所有可能的子集。 模式限制是字符串数组应该以 1 开头并以 1 结尾。因此会有很多子数组,例如索引 0 到 3、0 到 4 以及索引 7 到 9

为了解决这个问题,我正在考虑使用 2 个 for 循环,如果两种情况的值都等于 1,则打印它们。

v=[1,0,0,1,1,0,0,1,0,1,0,0,0,1]

resultList=[]

for i in range(0,len(v)-1):
    for j in range(i+1, len(v)):
        if v[i]==1 and v[j]==1:
            r=v[i:j]
            resultList.append(r)

print(resultList)

输出:[[1, 0, 0], [1, 0, 0, 1], [1, 0, 0, 1, 1, 0, 0], [1, 0, 0, 1, 1, 0, 0, 1, 0], [1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0], [1], [1, 1, 0, 0],

到目前为止,我在输出 [1, 0, 0, 1] 中只看到 1 个正确值。我应该使用集合而不是列表吗?我尝试过,但这种方法也不起作用。有人可以指导如何解决这个问题吗?

感谢您的宝贵时间。

最佳答案

您可以使用itertools.combinations来选择列表中值非零的2个索引:

from itertools import combinations
a = [1,0,0,1,1,0,0,1,0,1,0,0,0,1]
[a[i: j + 1] for i, j in combinations((i for i, n in enumerate(a) if n), 2)]

这将返回:

[[1, 0, 0, 1], [1, 0, 0, 1, 1], [1, 0, 0, 1, 1, 0, 0, 1], [1, 0, 0, 1, 1, 0, 0, 1, 0, 1], [1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1], [1, 1], [1, 1, 0, 0, 1], [1, 1, 0, 0, 1, 0, 1], [1, 1, 0, 0, 1, 0, 1, 0, 0, 0, 1], [1, 0, 0, 1], [1, 0, 0, 1, 0, 1], [1, 0, 0, 1, 0, 1, 0, 0, 0, 1], [1, 0, 1], [1, 0, 1, 0, 0, 0, 1], [1, 0, 0, 0, 1]]

关于python - 子字符串中的模式限制 - Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55661122/

相关文章:

python - 生成表模式检查 Excel(CSV) 并导入数据

当我更改其他对象列表时,Python 对象列表不断变化

Oracle - 最佳句子 : IN(), like、REGEXP_LIKE、otherone

Java子字符串破坏编码

python - 对 pandas 数据框中的相等索引重复操作

python - 在 Windows (Vista) 中将 python 最小化到系统托盘

Java迭代添加Arrays.asList中的所有内容

从列表中查找最小值的 C++ 函数。这个函数是否正确,因为返回的迭代器失效了

string - 算法:最佳地将字符串拆分为 3 个子字符串

python - 无法从 conda 环境构建 cython 代码