如何在Python中压缩未知数量的列表?

37 投票
2 回答
12172 浏览
提问于 2025-04-16 17:17

假设我有以下这些列表:

assignment = ['Title', 'Project1', 'Project2', 'Project3']
grades = [ ['Jim', 45, 50, 55], \
           ['Joe', 55, 50, 45], \
           ['Pat', 55, 60, 65] ]

我可以用下面的代码把这些列表合并在一起:

zip(assignment, grades[0], grades[1], grades[2])

如果成绩列表里的项目数量不确定,我该怎么用zip函数来合并呢?

2 个回答

1

在上面某个回答的基础上,解包(unpacking)让你可以把函数的参数作为一个数组传入,而不是一个一个地传递多个参数。文档中给出了以下例子:

list(range(3, 6))            # normal call with separate arguments
[3, 4, 5]
args = [3, 6]
list(range(*args))            # call with arguments unpacked from a list
[3, 4, 5]

对于zip()这个函数来说,这对我来说非常有用,因为我在编写一些逻辑,希望它能适应我数据的维度数量。这意味着我首先把每个维度收集到一个数组中,然后再用解包操作符把它们提供给zip()

myData = []
myData.append(range(1,5))
myData.append(range(3,7))
myData.append(range(10,14))

zippedTuple = zip(*myData)

print(list(zippedTuple))
61

你可以使用 * 来将一个列表拆开,变成位置参数:

zip(assignment, *grades)

撰写回答