Python 如何将列表中的所有术语一分为二?
我需要将一个字符串拆分为一个列表,然后拆分该列表中的所有项。我一直在尝试为这个做一个函数,但我不知道怎么做。我使用此函数将字符串一分为二:Python 如何将列表中的所有术语一分为二?,python,list,split,Python,List,Split,我需要将一个字符串拆分为一个列表,然后拆分该列表中的所有项。我一直在尝试为这个做一个函数,但我不知道怎么做。我使用此函数将字符串一分为二: def split_case(string): length_string = len(string) first_length = round(length_string / 2) first_half = string[0:first_length] second_half = string[first_length:]
def split_case(string):
length_string = len(string)
first_length = round(length_string / 2)
first_half = string[0:first_length]
second_half = string[first_length:]
return [first_half, second_half]
我需要做这样的事情:
def split_all(string,runs):
...
return split_up
>>>print(split_all("Hello World!",1)
>>>["Hello ", "World!"]
输出结果如下所示:
def split_all(string,runs):
...
return split_up
>>>print(split_all("Hello World!",1)
>>>["Hello ", "World!"]
“runs”参数是字符串被拆分的次数,所以一个是一半,二个是四分之一,三个是八分之一,四个是十六分之一,依此类推
>>>print(split_all("Spam",2)
>>>["S","p","a","m"]
或
谢谢你的帮助 您可以递归调用以拆分字符串:
def split_str(args, runs=1):
if not runs:
return [args]
else:
runs -= 1
h = len(args)//2
beginning = args[:h]
remaining = args[h:]
return split_str(beginning, runs) + split_str(remaining, runs)
输出:
>>> split_str('Hello World!', 1)
>>> ['Hello ', 'World!']
>>> split_str('Hello World!', 2)
>>> ['Hel', 'lo ', 'Wor', 'ld!']
>>> split_str('spam', 2)
>>> ['s', 'p', 'a', 'm']
['Hel', 'lo', ' Wo', 'rl', 'd, ', 'Ag', 'ai', 'n!']
['He', 'll', 'o ', 'Wor', 'ld', ', A', 'ga', 'in!']
['hel', 'lo ', 'wor', 'd']
不清楚拆分奇数长度的字符串时要执行什么操作,例如,
split_case('hello')
返回['hel','lo']
或['he','llo']
下面是一个可能的解决方案,其中包含一个决定此行为的关键字参数:
def split_case(string, first_half_longer=True):
string_length = len(string)
split_length = string_length // 2
if (string_length % 2 != 0) and first_half_longer:
split_length += 1
return [string[:split_length], string[split_length:]]
def split_all(string, runs, first_half_longer=True):
original_string_list = [string]
new_string_list = []
for run in range(runs):
for i in original_string_list:
new_string_list.extend(split_case(i, first_half_longer))
original_string_list = new_string_list
new_string_list = []
return original_string_list
string = "Hello World, Again!"
print(split_all(string, 3, True))
print(split_all(string, 3, False))
输出:
>>> split_str('Hello World!', 1)
>>> ['Hello ', 'World!']
>>> split_str('Hello World!', 2)
>>> ['Hel', 'lo ', 'Wor', 'ld!']
>>> split_str('spam', 2)
>>> ['s', 'p', 'a', 'm']
['Hel', 'lo', ' Wo', 'rl', 'd, ', 'Ag', 'ai', 'n!']
['He', 'll', 'o ', 'Wor', 'ld', ', A', 'ga', 'in!']
['hel', 'lo ', 'wor', 'd']
一种先计算子串的数量,然后将其全部累加的方法
def split_case(str, runs):
l = len(str)
res = []
splitCnt = 2 ** runs
if splitCnt >= l:
splitCnt = l
if (l % splitCnt == 0):
runLen = l / splitCnt
else:
runLen = l / splitCnt + 1
for i in range(0, l, runLen):
res.append(str[i:i+runLen])
return res
print(split_case("hello word", 2))
输出:
>>> split_str('Hello World!', 1)
>>> ['Hello ', 'World!']
>>> split_str('Hello World!', 2)
>>> ['Hel', 'lo ', 'Wor', 'ld!']
>>> split_str('spam', 2)
>>> ['s', 'p', 'a', 'm']
['Hel', 'lo', ' Wo', 'rl', 'd, ', 'Ag', 'ai', 'n!']
['He', 'll', 'o ', 'Wor', 'ld', ', A', 'ga', 'in!']
['hel', 'lo ', 'wor', 'd']
使用的简短方法
导入文本包装
def split_all(字符串,n):
返回text wrap.wrap(字符串,int(len(字符串)/2**n+1))
打印(全部拆分(“你好,世界又来了!”,2))
#['Hello'、'World'、'Aga'、'in!']
打印(全部拆分(“你好,世界又来了!”,3))
#[Hel',lo',Wor',ld',Aga',in!']
将第一个函数转换为一行:def split_str(string):返回string[:len(string)//2],string[len(string)//2:///code>所需输出的语义是什么?把每个字都切成两半?如果不均匀,单词的第一或第二部分应该是较长的部分,还是组成第三个元素?好的,那么你有一个可以将字符串一分为二的函数。你想把所有的弦剪成两半,一定次数。你知道要做多少次。到底是什么问题?例如,是否将“将字符串一分为二”应用于所有现有片段?此外,只是为了确保-您是否关心单词边界?例如,split\u all(“extremelylongword short”,1)
的输出应该是什么?谢谢,我并不是真的为字符串的哪个部分更长而烦恼,但这一部分让我可以选择;太酷了@石榴和蟒蛇因为你还没有投票权,所以你将使用它,特别是当很多人花时间提出解决你问题的方案时。