📅  最后修改于: 2023-12-03 14:46:41.115000             🧑  作者: Mango
有序集是一种数据结构,它能够存储多个元素,这些元素可以按照一定的规则进行排序。在Python中,有序集可以通过内置的list
类型来实现。
list
的基本用法list
是Python中内置的一种数据类型,它是一种有序的可变容器,可以存储任意类型的元素。以下是一些list
的基本用法:
list
my_list = []
list
中添加元素my_list.append('a')
my_list.append('b')
my_list.append('c')
list
中的元素print(my_list[0]) # 输出 'a'
print(my_list[1]) # 输出 'b'
print(my_list[2]) # 输出 'c'
len
函数获取list
的长度print(len(my_list)) # 输出 3
list
进行排序my_list.sort()
print(my_list) # 输出 ['a', 'b', 'c']
list
中存储对象在Python中,每个对象都有一个唯一的身份标识符(即内存地址)。如果我们将多个对象存储在同一个list
中,它们的身份标识符将成为这些对象在list
中的顺序的依据:
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
person1 = Person('Alice', 25)
person2 = Person('Bob', 30)
person3 = Person('Charlie', 20)
people = [person1, person2, person3]
print(people[0].name) # 输出 'Alice'
print(people[1].name) # 输出 'Bob'
print(people[2].name) # 输出 'Charlie'
在list
中存储对象时,需要注意以下两个问题:
list
中的顺序取决于其身份标识符,不是其属性值。list
、dict
等),则在对象本身更改后,其在list
中的顺序可能会发生变化。sorted
函数除了list
的sort
方法之外,Python还提供了一个sorted
函数,它可以对任意可迭代对象进行排序,并返回一个新的有序集。以下是一些sorted
函数的例子:
str
类型的字符串按字母顺序排序my_str = 'hello'
sorted_str = sorted(my_str)
print(sorted_str) # 输出 ['e', 'h', 'l', 'l', 'o']
list
类型的列表进行反序排序my_list = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5]
reversed_list = sorted(my_list, reverse=True)
print(reversed_list) # 输出 [9, 6, 5, 5, 5, 4, 3, 3, 2, 1, 1]
dict
类型的字典按键的字母顺序进行排序my_dict = {'c': 3, 'a': 1, 'b': 2}
sorted_dict = dict(sorted(my_dict.items()))
print(sorted_dict) # 输出 {'a': 1, 'b': 2, 'c': 3}
collections
模块中的OrderedDict
除了使用list
和sorted
函数之外,Python还提供了一个OrderedDict
类型,它是一个有序的字典,可以按照键的插入顺序进行迭代。以下是一个简单的例子:
from collections import OrderedDict
my_dict = OrderedDict()
my_dict['c'] = 3
my_dict['a'] = 1
my_dict['b'] = 2
for key, value in my_dict.items():
print(key, value)
# 输出:
# c 3
# a 1
# b 2
OrderedDict
的用法和普通的字典基本相同,只是它会按照键的插入顺序进行迭代。需要注意的是,OrderedDict
在内存使用上要比普通的字典多一些,因为它需要维护一个键的插入顺序的列表。