例如,假设我们有一个字符串:
'abcdefg'
我们需要得到一个这样的列表:
['ab', 'bc', 'cd', 'de', 'ef', 'fg']
我们不应该使用任何类型的库
这是我的解决方案:
def str_split(s):
s = iter(s)
ch1=''
ch2=''
chars_list=[]
while True:
try:
ch1 = ch2 or next(s)
ch2 = next(s)
chars_list.append(ch1 + ch2)
except:
break
return chars_list
我想知道有更好的解决方案吗?也许可以使用像here这样的列表理解?
答案 0 :(得分:4)
您只需使用zip()
和list comprehension:
chars_list = [ch1 + ch2 for ch1, ch2 in zip(s, s[1:])]
更一般地说,如果您需要任何n
的解决方案:
n = 3
chars_list = [s[i:i+n] for i in range(0, len(s) - n + 1, n - 1)]
# ['abc', 'cde', 'efg']
答案 1 :(得分:0)
你可以尝试这个(hacky)解决方案:
def str_split(s):
return [s[start:end] for start, end in enumerate(range(2, len(s)+1))]
Delgan的拉链解决方案似乎更优雅:)