我如何知道';1';Python3中有一个字符串吗?
我想知道一个字符串中有多少个“1”包,这些字符串只包含我如何知道';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
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
现在,再次检查我提交的代码,如果发现任何失败测试用例,请告诉我。