📜  python中的有序集(1)

📅  最后修改于: 2023-12-03 14:46:41.115000             🧑  作者: Mango

Python中的有序集

有序集是一种数据结构,它能够存储多个元素,这些元素可以按照一定的规则进行排序。在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中存储对象时,需要注意以下两个问题:

  1. 对象在list中的顺序取决于其身份标识符,不是其属性值。
  2. 如果对象是可变的(例如listdict等),则在对象本身更改后,其在list中的顺序可能会发生变化。
使用sorted函数

除了listsort方法之外,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

除了使用listsorted函数之外,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在内存使用上要比普通的字典多一些,因为它需要维护一个键的插入顺序的列表。