有没有一种方法可以在Python中不使用循环将字符串分成两个相等的部分?
Python 2:
firstpart, secondpart = string[:len(string)/2], string[len(string)/2:]
Python 3:
firstpart, secondpart = string[:len(string)//2], string[len(string)//2:]
建议使用string[(len(string)-1)//2:], string[:(len(string)-1)//2+1]
,以考虑字符串长度为奇数的情况!
这种方法在edx上已经验证过,非常有效。
first_half = s[:len(s)//2]
second_half = s[len(s)//2:]
a,b = given_str[:len(given_str)/2], given_str[len(given_str)/2:]
def split(s):
half, rem = divmod(len(s), 2)
return s[:half + rem], s[half + rem:]
frontA, backA = split('abcde')
first_half = s[0:len(s)//2]
second_half = s[len(s)//2 if len(s)%2 == 0 else ((len(s)//2)+1):]
小修正:上述解决方案对于以下字符串将会抛出错误。
string = '1116833058840293381'
firstpart, secondpart = string[:len(string)/2], string[len(string)/2:]
你可以执行 int(len(string)/2)
来得到正确的答案。
firstpart, secondpart = string[:int(len(string)/2)], string[int(len(string)/2):]
//
来代替/
进行除法运算。 - AhmedO
firstpart, secondpart = string[::2], string[1::2]
,因为问题并没有指定这些部分必须是连续的。 - Duncanfirstpart, secondpart = string[:len(string)//2], string[len(string)//2:]
的意思是将字符串string
分成两个部分,第一部分包含前一半的字符,第二部分包含后一半的字符。 - ucharstring
不是一个关键字,虽然它是一个模块,如果这是你想到的东西。 - wjandrea