如何使用Python内置函数reversed()翻转列表元素?
Python内置函数reversed()用于翻转序列,可以用于列表、元组、字符串等。本文介绍如何使用reversed()函数翻转列表元素。
reversed()函数的基本用法如下:
reversed(seq)
其中,seq表示要翻转的序列。这个函数返回一个迭代器对象,通过迭代器可以逐个遍历序列中的元素。
例子1:对列表进行翻转
下面的代码演示了如何对列表进行翻转:
lst = [1, 2, 3, 4, 5] r_lst = list(reversed(lst)) print(r_lst) # [5, 4, 3, 2, 1]
将列表传给reversed()函数,生成一个迭代器对象。将迭代器对象转换成列表对象,得到翻转后的列表r_lst。
想用reversed()函数改变原列表的排列,可以使用切片语法。
例子2:通过切片直接修改原列表
lst = [1, 2, 3, 4, 5] lst[:] = reversed(lst) print(lst) # [5, 4, 3, 2, 1]
这个例子里的切片语法lst[:]表示对整个列表进行切片,[:]中的两个冒号省略了起始和结束索引,所以切片覆盖整个列表。
将reversed()生成的迭代器对象直接赋值给切片lst[:],相当于原列表被翻转了。
例子3:翻转列表中的元素对象
如果列表中的元素是对象,可以使用sort()方法或sorted()函数对对象属性进行排序。使用sort()方法时需要定义一个排序函数,这个函数返回一个属性值,sort()根据这个属性值对对象进行排序。
下面的代码演示了如何对列表中的元素对象进行属性值排序:
class Student(object):
def __init__(self, name, score):
self.name = name
self.score = score
def __repr__(self):
return '{}:{}'.format(self.name, self.score)
def get_score(student):
return student.score
students = [Student('Tom', 90), Student('Bob', 80), Student('Mary', 95)]
reverse_students = sorted(students, key=get_score, reverse=True)
print(reverse_students) # [Mary:95, Tom:90, Bob:80]
这个例子中,先定义了一个Student类,对属性进行了初始化和重载__repr__方法,获取类对象的score属性作为排序依据。
然后创建了一个Student类实例列表students,并声明一个get_score函数,该函数获取Student类实例的score属性值。
将get_score函数传递给sorted()函数的key参数,用来指定按照score属性值进行排序。
最后,将reverse设置为True,表示按照逆序进行排序,生成reverse_students列表。
通过这种方式,可以对任意属性值进行排序,从而实现对列表的翻转。
