2017-01-02 63 views
0

我试图将分解成偶数部分。例如,如果我有['abcdef'],预期的输出应该是['ab','cd','ef']。我不断收到相同的输入第一次测试 'asdfadsf'/在列表中均匀分割字符串:Python

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) 
+0

我敢打赌,这里的提问者是相同的编程过程为[这家伙(http://stackoverflow.com/q/41432202/1709587)谁(严重)问看起来是在同一个问题表中,大约在发布这个问题的同一时间的后面的问题。 –

回答

1

试试这个,

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 
+0

为了满足不均匀长度字符串的测试用例,如果len(s)<2],可以在['as','df','ad','s']中使用s ['s' ' – blacksite

-1

做你想要的是最简单的方法与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