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

时间:2011-05-09 15:06:06

标签: python list zip

假设我有以下列表:

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 个答案:

答案 0 :(得分:43)

您可以使用* unpack列表来查看位置参数:

zip(assignment, *grades)

答案 1 :(得分:0)

添加到上面的答案中,解包允许您将函数参数作为数组而不是多个参数传递到函数中。文档中给出了以下示例:

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))