如何将子列表添加到子列表?

时间:2019-09-16 08:02:35

标签: python python-2.7 list comparison sublist

在某些情况下,即如果其长度小于2,我想将一个子列表追加到前一个子列表中。因此,[5]的长度小于2,现在将使用5(a + b)。

a = [1,1,1,1]
b = [5]
c = [1,1,1]
d = [1,1,1,1,1]
e = [1,2]
f = [1,1,1,1,1,1]

L = [a,b,c,d,e,f]

print 'List:', L

def short(lists):
    result = []
    for value in lists:
        if len(value) <= 2 and result:
            result[-1] = result[-1] + value
    return result

result = short(L)
print 'Result:', result

结果应为:[[1, 1, 1, 1, 5], [1, 1, 1], [1, 1, 1, 1, 1, 2], [1, 1, 1, 1, 1, 1]]

但是从我的代码中,我得到:[]

2 个答案:

答案 0 :(得分:0)

这可能有帮助

例如:

a = [1,1,1,1]
b = [5]
c = [1,1,1]
d = [1,1,1,1,1]
e = [1,2]
f = [1,1,1,1,1,1]

L = [a,b,c,d,e,f]

print( 'List:', L)

def short(lists):
    result = []
    for value in lists:
        if len(value) <= 2:            #check len
            result[-1].extend(value)   #extend to previous list
        else:
            result.append(value)       #append list. 
    return result

result = short(L)
print( 'Result:', result)

输出:

List: [[1, 1, 1, 1], [5], [1, 1, 1], [1, 1, 1, 1, 1], [1, 2], [1, 1, 1, 1, 1, 1]]
Result: [[1, 1, 1, 1, 5], [1, 1, 1], [1, 1, 1, 1, 1, 1, 2], [1, 1, 1, 1, 1, 1]]

答案 1 :(得分:0)

将功能更改为:

def short(lists):
result = []
for value in lists:
    if len(value) < 2 and result:
        result[-1].extend(value)
    else:
        result.append(value)
return result