如何打印元组列表

19 投票
8 回答
90696 浏览
提问于 2025-04-17 17:24

我有一个叫做 gradebook 的列表,里面每个元素都是一个元组,元组里包含一门课和学生能得到的分数。比如说,

gradebook = [('Math 212', 'Linear Algebra', 'Fall 2012', 'B'),  
             ('CS 130', 'Python', 'Spring 2013', 'A')]

接下来还有其他的内容。我希望它能像这样打印出来:

Class: Math 212.....Subject: Linear Algebra.....Term: Fall 2012.....Grade: B`  
Class: CS 130.......Subject: Computer Science...Term: Spring 2013...Grade: A`  

我想要能够遍历这个列表中的每个元组,然后把元组里的每个元素都打印出来。我该怎么做呢?

补充说明:这是我现在的代码:

for aTuple in gradebook:
    print(aTuple)

抱歉,我对Python还很陌生,所以我不太明白这个是怎么工作的。

8 个回答

4
gradebook = [('Math 212', 'Linear Algebra', 'Fall 2012', 'B'), ('CS 130', 'Python', 'Spring 2013', 'A')]

fieldwidths = 13, 19, 14, 1
for tup in gradebook:
  tup = (s.ljust(w, '.') for s,w in zip(tup, fieldwidths))
  print 'Class: {}Subject: {}Term: {}Grade: {}'.format(*tup)

我手动设置了字段的宽度,让它们和你的例子一致。不过,你可能更喜欢用一种聪明的方法来生成字段宽度,也就是根据成绩单中每一列的最大元素长度来决定。

下次的话,使用一个 dict(字典)来存储你的成绩单条目会比用 tuple(元组)更好。

10

或者你可以这样做...

for id, name, semester, grade in gradebook:
    print id, name, semester, grade
23

一般来说,你可以通过一个列表来循环,并访问元组的索引:

for x in gradebook:
    print x[0], x[1]

在这个例子中,x[0] 会给你元组的第一部分,x[1] 就是第二部分,依此类推。你可以试着玩玩这个格式,应该能自己搞定其他的。

补充说明:虽然这里有些其他的回答看起来更好,因为它们把元组拆开了,更符合“Python的风格”。像这样:

a, b, c = ('a','b','c')

撰写回答