欢迎访问宙启技术站
智能推送

如何使用Python内置函数reversed()翻转列表元素?

发布时间:2023-06-16 16:35:27

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列表。

通过这种方式,可以对任意属性值进行排序,从而实现对列表的翻转。