在列表中均匀分割字符串:Python

在列表中均匀分割字符串:Python,python,string,Python,String,我试着把刺分成均匀的部分。例如,如果我有['abcdef'],预期的输出应该是['ab','cd','ef']。我在第一次测试“asdfadsf”中不断得到相同的输入/ def solution(s): lists = [] for i in s: if len(s) % 2 == 0: lists.append(s) zip(*[iter(lists)]*2) return lists tes

我试着把刺分成均匀的部分。例如,如果我有
['abcdef']
,预期的输出应该是
['ab','cd','ef']
。我在第一次测试“asdfadsf”中不断得到相同的输入/

def solution(s):

    lists = []

    for i in s:
        if len(s) % 2 == 0:
            lists.append(s)
            zip(*[iter(lists)]*2)
        return lists

test.describe("Example Tests")

tests = (
    ("asdfadsf", ['as', 'df', 'ad', 'sf']),
    ("asdfads", ['as', 'df', 'ad', 's_']),
    ("", []),
    ("x", ["x_"]),
)

 for inp, exp in tests:
 test.assert_equals(solution(inp), exp)
试试这个

def solutions(s):
    return [j.ljust(2,'_') for j in (s[i:i+2] for i in  range(0,len(s),2))]
结果

In [38]: tests = (
   ....:     ("asdfadsf", ['as', 'df', 'ad', 'sf']),
   ....:     ("asdfads", ['as', 'df', 'ad', 's_']),
   ....:     ("", []),
   ....:     ("x", ["x_"]),
   ....: )
In [39]: for inp, exp in tests:
   ....:     print solutions(inp) == exp 
   ....:     
True
True
True
True

做你想做的事情最简单的方法是使用
range

def chunk(input):

    if len(input) % 2 == 1:
        input += '_'

    output = [input[idx:idx+2] for idx in range(0, len(input), 2]
    return output

为了满足长度不均匀字符串的测试用例,如果len(s)<2]我敢打赌,这里的提问者与在发布此问题的同一时刻(糟糕地)从同一问题单上问了什么看起来是后面的问题的人在相同的编程课程上。