如何在Python中压缩未知数量的列表?
假设我有以下这些列表:
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)