a=0
b=0
s="1110000"
for i in range(len(s)):
if s[i]=='1':
a+=1
else:
b+=1
如果否则我需要写在一行中。我尝试了以下方式它不起作用。
a+=1 if if s[i]=='1' else b+=1
请帮助我
a=0
b=0
s="1110000"
for i in range(len(s)):
if s[i]=='1':
a+=1
else:
b+=1
如果否则我需要写在一行中。我尝试了以下方式它不起作用。
a+=1 if if s[i]=='1' else b+=1
请帮助我
if ... else
当用作三元运算符时,是一个不能很好地发挥作用的函数+=1
——因为后者会产生副作用。如果你真的想使用三元运算符,你可以使用:
(a,b) = (a+1,b) if s[i] == '1' else (a,b+1)
如果您只是在寻找更 Pythonic 的解决方案,请删除循环并使用Counter
:
from collections import Counter
counts = Counter(s)
a,b = counts['1'],counts['0']
a=0
s="1110000"
for i in range(len(s)):
a += 1 if s[i]=='1' else 0
b= len(s) - a
您可以尝试使用 lambda 函数,然后从列表中解压缩结果
sample= lambda x: [x.count(i) for i in set(x)]
a,b = sample(s). #Unpacking the result
print(a,b, end='\t')
输出
3, 4
选项 2
new = lambda x,y: [sum([x + 1 for i in s if i =='1']),sum([y+1 for m in s if m != '1'])]
a,b = new(a,b)
print(a,b, end='\t')
输出
3,4