给定约束,如何使用python将N个数字列表更改为N + 1个数字列表

时间:2019-02-26 08:31:27

标签: python python-3.x

在将列表转换为列表列表时,我需要帮助,以使列表的最后一个数字分成两个(非负整数)部分,总和为最后一个数字。

例如:

  

输入:[6,3,11,4]

然后

  

输出:[[6,3,11,4,0​​],[6,3,11,3,1],[6,3,11,2,2],[6,3,11,1 ,3],[6,3,11,0,4]]

CreateTemplate(templateName: string): Observable<any> {
    return this.httpClient.post<any>(Url + "Templates/CreateTemplate?templateName=" + templateName, "");
}

我需要创建哪个函数?

注意:最后一个数字是4,并分为4,0;

  

3,1; 2,2; 1,3; 0,4

3 个答案:

答案 0 :(得分:1)

不完全使用funct语法,但是您可以尝试类似-

[list1[0:-1]+[list1[-1]-i,i] for i in range(list1[-1]+1)]

输出为-

[[6, 3, 11, 4, 0],
 [6, 3, 11, 3, 1],
 [6, 3, 11, 2, 2],
 [6, 3, 11, 1, 3],
 [6, 3, 11, 0, 4]]

答案 1 :(得分:1)

尝试一下:

list1 = [6,3,11,4]
b = [list1[:-1] + [list1[-1]-i,i] for i in range(list1[-1]+1)]
# [[6, 3, 11, 4, 0], [6, 3, 11, 3, 1], [6, 3, 11, 2, 2], [6, 3, 11, 1, 3], [6, 3, 11, 0, 4]]

答案 2 :(得分:1)

list1= [6,3,11,4] 

def create_my_list(inp_list):

    output_list = []
    last_digit = inp_list[-1]

    for combination in range(last_digit+1):
           output_list.append(inp_list[:-1].extend([combination, last_digit-combination])

    return output_list

您可以像其他答案一样将其连接成一个单行,但这更容易理解