Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我如何知道';1';Python3中有一个字符串吗?_Python_Python 3.x_String - Fatal编程技术网

我如何知道';1';Python3中有一个字符串吗?

我如何知道';1';Python3中有一个字符串吗?,python,python-3.x,string,Python,Python 3.x,String,我想知道一个字符串中有多少个“1”包,这些字符串只包含1s和0s 比如说, 对于1011011,“1”的捆绑包数将为3,因为捆绑包为1,11,11,但0s除外 对于1110111011,它也将是4,因为捆绑包是111,111,1 有没有什么简单明了的方法来解决这个问题?这很容易 import re string = "11101110101" bundles = re.findall(r'1+',string) 使用贪婪搜索搜索1的最长序列。现在,re.findall,贪婪地搜索整个字符串,并

我想知道一个字符串中有多少个“1”包,这些字符串只包含
1
s和
0
s

比如说,

对于
1011011
,“1”的捆绑包数将为
3
,因为捆绑包为
1
11
11
,但
0
s除外

对于
1110111011
,它也将是
4
,因为捆绑包是
111
111
1

有没有什么简单明了的方法来解决这个问题?

这很容易

import re
string = "11101110101"
bundles = re.findall(r'1+',string)
使用贪婪搜索搜索
1的最长序列
。现在,
re.findall
,贪婪地搜索整个字符串,并返回一个列表。此列表将包含1的所有引用,其中包含1的组。 如果要打印捆绑包的总数,请使用以下命令:

print(len(bundles))

输出:
4

这很容易

import re
string = "11101110101"
bundles = re.findall(r'1+',string)
使用贪婪搜索搜索
1的最长序列
。现在,
re.findall
,贪婪地搜索整个字符串,并返回一个列表。此列表将包含1的所有引用,其中包含1的组。 如果要打印捆绑包的总数,请使用以下命令:

print(len(bundles))

输出:
4

以下是您的操作方法。 将字符串拆分为0,然后从返回的列表中删除空元素,然后打印列表的长度

string = '0000'
x = string.split('0')
while "" in x:
    x.remove('')
print(len(x))
另一种方法是使用循环理解来删除空

string = '0000'
x = string.split('0')
x = [y for y in x if y != ""]
print(len(x))
这是你怎么做的。 将字符串拆分为0,然后从返回的列表中删除空元素,然后打印列表的长度

string = '0000'
x = string.split('0')
while "" in x:
    x.remove('')
print(len(x))
另一种方法是使用循环理解来删除空

string = '0000'
x = string.split('0')
x = [y for y in x if y != ""]
print(len(x))
最简单的(键入)方法如下:

解释它的工作原理稍微复杂一点,但对于一般编程来说,这是一个很好的实践。除字符串以1开头的情况外,每个1束都以子字符串“01”开头。如果只对这些相邻字符对进行计数,那么就可以准确地对捆绑进行计数

压缩偏移量为1的字符串将得到所有字符对,例如

>>> s="111001101011"
>>> print( zip(s,s[1:]) )
[('1', '1'), ('1', '1'), ('1', '0'), ('0', '0'), ('0', '1'), ('1', '1'), ('1', '0'), ('0', '1'), ('1', '0'), ('0', '1'), ('1', '1')]
剩下要做的就是通过在开头添加一个额外的“0”来修复可能以“1”开头的拐角情况

享受。

最简单的打字方法是:

解释它的工作原理稍微复杂一点,但对于一般编程来说,这是一个很好的实践。除字符串以1开头的情况外,每个1束都以子字符串“01”开头。如果只对这些相邻字符对进行计数,那么就可以准确地对捆绑进行计数

压缩偏移量为1的字符串将得到所有字符对,例如

>>> s="111001101011"
>>> print( zip(s,s[1:]) )
[('1', '1'), ('1', '1'), ('1', '0'), ('0', '0'), ('0', '1'), ('1', '1'), ('1', '0'), ('0', '1'), ('1', '0'), ('0', '1'), ('1', '1')]
剩下要做的就是通过在开头添加一个额外的“0”来修复可能以“1”开头的拐角情况

享受。

您可以使用并使用
'0'
作为拆分字符:

>>> from itertools import groupby

>>> s = '11101110101'
>>> sum(1 for k, g in groupby(s, '0'.__eq__) if not k)
4
它并不特别漂亮,但很有效。

您可以使用并使用
'0'
作为拆分字符:

>>> from itertools import groupby

>>> s = '11101110101'
>>> sum(1 for k, g in groupby(s, '0'.__eq__) if not k)
4

它并不特别漂亮,但很管用。

字符串只包含1和0

s = raw_input("Enter: ")
print(len([i for i in s.split("0") if i!=""]))

仅由1和0组成的字符串

s = raw_input("Enter: ")
print(len([i for i in s.split("0") if i!=""]))

在上一个示例中不是4吗?@PriteshThaker谢谢你的更正:)我编辑过:)在上一个示例中不是4吗?@PriteshThaker谢谢你的更正:)我编辑过:)如果字符串重复了零怎么办?例如,
10110011
现在,再次检查我提交的代码,如果发现任何失败的测试用例,请告诉我。如果字符串重复了零怎么办?例如,
10110011
现在,再次检查我提交的代码,如果发现任何失败测试用例,请告诉我。