如何在每个nth-1 + nth char中拆分python字符串

时间:2016-05-15 16:44:54

标签: python

例如,假设我们有一个字符串:

'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这样的列表理解?

2 个答案:

答案 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的拉链解决方案似乎更优雅:)