将列表中的元素添加到另一个列表

时间:2018-03-18 05:50:11

标签: python

我有一个包含学生ID的列表:

ID = [1,2,3]

我有一张包含学生姓名及其爱好的表格:

student = [['Jack','Fishing'],['Alice','Reading'],['Mun','Football']]

我想将ID连接到我获得的学生列表中每个子列表的第一个位置:

[[1,'Jack','Fishing'],[2,'Alice','Reading'],[3,'Mun','Football']]

我试过了:

for i in range(len(student)):
    student = ID[i] + student[i]

但是我收到一条错误,指出不支持的操作数类型。

5 个答案:

答案 0 :(得分:3)

您可以将zip与列表理解

一起使用

<强>实施例

ID = [1,2,3]
l = [['Jack','Fishing'],['Alice','Reading'],['Mun','Football']]

newList = [[i[0]]+i[1] for i in zip(ID, l)]
print(newList)

<强>输出:

[[1, 'Jack', 'Fishing'], [2, 'Alice', 'Reading'], [3, 'Mun', 'Football']]

答案 1 :(得分:1)

@clink在您编写ID[i]时,会从列表ID中选择一个元素。列表ID中的所有元素都是int类型。此外,students列表中的所有元素都是list类型。因此,当您在+int类型之间使用list运算符时,会出现错误

TypeError: unsupported operand type(s) for +: 'int' and 'list'

您需要做的是将int放入新的list以获得您正在寻找的结果。以下是修改后的代码:

ID = [1,2,3]
student = [['Jack','Fishing'],['Alice','Reading'],['Mun','Football']]
for i in range(len(student)):
    student[i] = [ID[i]] + student[i]

<强>输出

[[1, 'Jack', 'Fishing'], [2, 'Alice', 'Reading'], [3, 'Mun', 'Football']]

注意单个更改:ID[i]已更改为[ID[i]]

答案 2 :(得分:0)

@ Clink-您从range(len(student))获得的元素是int类型并尝试与列表合并。您应该合并可迭代类型。这就是你得到这个错误的原因。

TypeError:+:'int'和'list'的不支持的操作数类型

您可以尝试Rakesh提供的解决方案,也可以采用以下方法。

[std.insert(0, ID[idx]) for idx, std in enumerate(student)]

<强>输出 [[1,'Jack','Fishing'],[2,'Alice','Reading'],[3,'Mun','Football']]

答案 3 :(得分:0)

稍微改变一下:

bool checkArray(int a, int b, int c, int d) {
    if (d > 6) {
        d = 0;
        ++c;
    }
    if (c > 5) {
        c = 0;
        ++b;
    }
    if (b > 4) {
        b = 0;
        ++a;
    }
    if (a > 3)
        return false;

    if (array[a][b][c][d] == something)
        return true;

    return checkArray(a,b,c,d+1);
}

输出:

ID = [1,2,3]
student = [['Jack','Fishing'],['Alice','Reading'],['Mun','Football']]
for i in range(len(student)):
    student[i].insert(0,ID[i])
print(student)

答案 4 :(得分:0)

你不需要循环或任何东西只是尝试:

ID = [1,2,3]
student = [['Jack','Fishing'],['Alice','Reading'],['Mun','Football']]

print(list(zip(ID,student)))

输出:

[(1, ['Jack', 'Fishing']), (2, ['Alice', 'Reading']), (3, ['Mun', 'Football'])]

如果您不想要嵌套列表,那么:

print(list(map(lambda x:[x[0],*x[1]],zip(ID,student))))

输出:

[[1, 'Jack', 'Fishing'], [2, 'Alice', 'Reading'], [3, 'Mun', 'Football']]