Python-VBA函数之旅-sorted函数

目录

一、sorted函数的常见应用场景

二、sorted函数使用注意事项

三、如何用好sorted函数?

1、sorted函数:

1-1、Python:

1-2、VBA:

2、推荐阅读:

个人主页: https://blog.csdn.net/ygb_1024?spm=1010.2135.3001.5421

 

一、sorted函数的常见应用场景

        sorted函数在Python中非常有用,因为它允许你对各种数据结构进行排序,常见的应用场景有:

1、基本列表排序:当你有一个列表并希望根据列表中的元素值进行排序时,你可以使用sorted()函数。例如,你可能有一个包含学生分数的列表,你想知道哪个学生的分数最高或最低。

2、元组列表排序:你可以对包含元组的列表进行排序,根据元组中的某个元素值,这在处理具有多个属性的数据记录时非常有用。

3、字典列表排序:如果你有一个包含字典的列表,并希望根据字典中的某个值进行排序,你可以使用sorted()函数和lambda函数作为key参数。例如,你可能有一个包含员工信息的字典列表,并希望根据员工的年龄或薪水进行排序。

4、字符串列表排序:如果你有一个包含字符串的列表,并希望按照字母顺序或字符串长度进行排序,你可以使用sorted()函数并传递适当的key参数。例如,你可能有一个包含文件名的列表,并希望按文件名长度进行排序。

5、自定义对象排序:如果你有一个自定义对象的列表,并希望根据对象的某个属性进行排序,你可以使用sorted()函数和类的属性作为key参数,这要求你的对象是可比较的,或者你可以提供一个比较函数或方法。

6、复杂对象排序:当需要根据对象的多个属性进行排序时,可以通过在key参数中提供一个函数来实现,这个函数接受一个对象作为输入,并返回一个用于排序的值(可以是元组,以便根据多个属性排序)。

7、处理文件和数据集:在处理大量数据时,你可能需要将数据按照特定顺序进行排序,以便进行进一步的分析或可视化,sorted()函数可以用于此目的。

8、算法和数据结构:在编写算法或实现数据结构(如排序算法、搜索算法、图算法等)时,sorted()函数可能是一个有用的工具,用于验证你的实现是否正确。

9、与生成器结合使用:sorted()函数可以接受任何可迭代对象作为输入,包括生成器,这允许你在不需要将整个数据集加载到内存中的情况下进行排序。

10、排序后切片操作:结合sorted()函数和列表切片,可以很容易地获取排序后的前N个元素。

11、与列表推导式结合使用:你可以将sorted()函数与列表推导式结合使用,以创建新的已排序列表,同时根据某个条件筛选或转换元素。

二、sorted函数使用注意事项

        在Python中,sorted()函数是一个非常有用的内置函数,用于对可迭代对象(如列表、元组、字典等)进行排序。相关注意事项如下:

1、原始数据不会被修改:sorted()函数返回一个新的已排序列表,而原始的可迭代对象不会被修改。

2、排序的稳定性:Python的sorted()函数在排序时保证是稳定的,即具有相同值的元素在排序后的顺序与它们在原始列表中的顺序相同。

3、排序关键字:sorted()函数允许你通过`key`参数指定一个函数,该函数将在比较元素之前应用于每个元素,这对于非数字类型(如字符串、元组、字典等)的排序特别有用。

4、排序顺序:默认情况下,sorted()函数按升序排序。你可以通过reverse=True参数将其更改为降序排序。

5、排序对象:虽然sorted()函数主要用于列表,但它也可以用于其他可迭代对象,如元组、集合和字典(当用于字典时,默认对键进行排序)。

6、性能:对于大型数据集,sorted()函数的性能可能是一个问题,在这种情况下,你可能需要考虑使用更高效的排序算法或数据结构,或者考虑是否可以在数据收集阶段就进行排序。

7、数据类型:sorted()函数可以对多种数据类型进行排序,但你需要确保你的比较操作是有意义的。例如,对于不同类型的对象(如字符串和数字),直接比较可能会导致TypeError异常,在这种情况下,你可能需要在应用sorted()之前对数据进行转换或清洗。

三、如何用好sorted函数?

        要使用好Python中的sorted()函数,你需遵循以下建议:

1、理解排序的稳定性:当排序的元素中有重复值时,sorted()函数会保持它们的原始顺序(即稳定的排序),这在进行多键排序时尤其有用。

2、选择合适的排序键:通过key参数,你可以为sorted()函数提供一个函数,该函数将应用于输入可迭代对象的每个元素,并决定排序的依据。例如,你可以根据字符串的长度、列表中的第二个元素或其他任何复杂的条件进行排序。

3、使用lambda表达式:key参数经常与lambda表达式一起使用,以简洁地定义排序键,Lambda表达式允许你快速定义简单的匿名函数。

4、考虑性能:对于大型数据集,排序可能会很耗时,如果可能的话,尝试在收集数据时就保持有序,或者在需要之前对数据进行预处理以减少排序的开销。

5、使用reverse参数:如果你想要以降序而不是默认的升序进行排序,可以设置reverse=True。

6、对字典排序:你可以使用sorted()函数对字典的键或值进行排序:默认情况下,sorted(dict)会返回按键排序的键的列表;要按值排序,可以传入dict.items()并使用key参数来指定值。

7、排序自定义对象:如果你的可迭代对象包含自定义类的实例,并且你想要根据这些实例的某个属性进行排序,你可以提供一个key函数来访问该属性。

8、避免不必要的排序:在某些情况下,你可能不需要对整个数据集进行排序。例如,如果你只需要找到最大或最小的元素,可以使用max()或min()函数,它们通常比排序整个列表更快。

9、使用sorted()函数而不是列表的`.sort()`方法:sorted()函数返回一个新的已排序列表,而列表的`.sort()`方法会修改原始列表;如果你不希望修改原始数据,或者你想要保留原始数据的多个排序版本,那么使用sorted()函数会更好。

10、利用operator模块:对于简单的排序键(如按数字大小或字符串字母顺序),你可以使用operator模块中的函数作为key参数,而不是定义自己的lambda表达式,如operator.itemgetter()函数可以用于根据元组的特定项进行排序。

1、sorted函数:
1-1、Python:
# 1.函数:sorted
# 2.功能:用于对可迭代对象进行排序
# 3.语法:sorted(iterable[, key=None, reverse=False])
# 4.参数:
# 4-1、iterable(必须):表示可迭代对象,如列表、字符串、字典等
# 4-2、key(可选):表示一个函数或方法,用来指定排序规则;默认key=None,表示直接比较元素进行排序
# 4-3、reverse(可选):一个布尔值,即排序规则,默认reverse=False,表示升序排列;若设置reverse=True,则表示降序排列
# 5.返回值:返回重新排序的列表
# 6.说明:列表对象的.sort()方法和内置sorted()函数的作用基本相同,差异如下:
# 6-1、列表对象的.sort()方法:直接修改原始列表,生成新列表,影响原始列表
# 6-2、内置sorted()函数:会建立一个原始列表的副本,该副本为排序后的列表,不影响原始列表
# 7.示例:
# 用dir()函数获取该函数内置的属性和方法
print(dir(sorted))
# ['__call__', '__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__',
# '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__name__',
# '__ne__', '__new__', '__qualname__', '__reduce__', '__reduce_ex__', '__repr__', '__self__', '__setattr__', '__sizeof__',
# '__str__', '__subclasshook__', '__text_signature__']# 用help()函数获取该函数的文档信息
help(sorted)# 应用一:基本列表排序
# 示例1: 对整数列表进行排序
# 创建一个整数列表
numbers = [3, 6, 10, 8, 10, 24, 5, 11]
# 使用sorted()函数进行排序
sorted_numbers = sorted(numbers)
# 打印排序后的列表
print(sorted_numbers)
# [3, 5, 6, 8, 10, 10, 11, 24]# 示例2: 对字符串列表进行排序
# 创建一个字符串列表
words = ['Myelsa', 'Jimmy', 'Lucy', 'Bruce']
# 使用sorted()函数进行排序
sorted_words = sorted(words, key=str.isupper)
# 打印排序后的列表
print(sorted_words)
# ['Myelsa', 'Jimmy', 'Lucy', 'Bruce']# 示例3: 使用key参数按字符串长度排序
# 创建一个字符串列表
words = ['Myelsa', 'Jimmy', 'Lucy', 'Bruce']
# 使用sorted()函数和key参数,按字符串长度进行排序
sorted_words_by_length = sorted(words, key=len)
# 打印排序后的列表
print(sorted_words_by_length)
# ['Lucy', 'Jimmy', 'Bruce', 'Myelsa']# 示例4: 对字典列表按某个键值排序
# 创建一个包含字典的列表
students = [{'name': 'Myelsa', 'age': 18}, {'name': 'Bruce', 'age': 6}, {'name': 'Jimmy', 'age': 15}]
# 使用sorted() 函数key参数,按'age'键值进行排序
sorted_students_by_age = sorted(students, key=lambda s: s['age'])
# 打印排序后的列表
print(sorted_students_by_age)
# [{'name': 'Bruce', 'age': 6}, {'name': 'Jimmy', 'age': 15}, {'name': 'Myelsa', 'age': 18}]# 示例5: 对字典列表按多个键值排序(先按年龄,再按名字)
# 创建一个包含字典的列表
students = [{'name': 'Myelsa', 'age': 18}, {'name': 'Jimmy', 'age': 15}, {'name': 'Bruce', 'age': 6}]
# 使用sorted()函数和key参数,先按'age'键值进行排序,然后按'name'键值进行排序
sorted_students_by_age_and_name = sorted(students, key=lambda s: (s['age'], s['name']))
# 打印排序后的列表
print(sorted_students_by_age_and_name)
# [{'name': 'Bruce', 'age': 6}, {'name': 'Jimmy', 'age': 15}, {'name': 'Myelsa', 'age': 18}]# 示例6: 使用reverse参数进行降序排序
# 创建一个整数列表
numbers = [3, 6, 10, 8, 10, 24, 5, 11]
# 使用sorted()函数和reverse参数进行降序排序
sorted_numbers_desc = sorted(numbers, reverse=True)
# 打印排序后的列表
print(sorted_numbers_desc)
# [24, 11, 10, 10, 8, 6, 5, 3]# 应用二:元组列表排序
# 示例1: 对元组列表按照第一个元素排序
# 创建一个包含元组的列表
tuples_list = [(3, 'apple'), (1, 'banana'), (4, 'cherry'), (1, 'date')]
# 使用sorted()函数按照元组的第一个元素进行排序
sorted_tuples = sorted(tuples_list, key=lambda x: x[0])
# 打印排序后的列表
print(sorted_tuples)
# [(1, 'banana'), (1, 'date'), (3, 'apple'), (4, 'cherry')]# 示例2: 对元组列表按照第二个元素(字符串)进行排序
# 创建一个包含元组的列表
tuples_list = [(3, 'apple'), (1, 'banana'), (4, 'cherry'), (2, 'apple')]
# 使用sorted()函数按照元组的第二个元素(字符串)进行排序
sorted_tuples = sorted(tuples_list, key=lambda x: x[1])
# 打印排序后的列表
print(sorted_tuples)
# [(3, 'apple'), (2, 'apple'), (1, 'banana'), (4, 'cherry')]# 示例3: 对元组列表先按第一个元素(降序),然后按第二个元素(升序)进行排序
# 创建一个包含元组的列表
tuples_list = [(3, 'apple'), (1, 'banana'), (3, 'cherry'), (2, 'apple')]
# 使用sorted()函数和key参数,先按元组的第一个元素(降序),然后按第二个元素(升序)进行排序
sorted_tuples = sorted(tuples_list, key=lambda x: (-x[0], x[1]))
# 打印排序后的列表
print(sorted_tuples)
# [(3, 'apple'), (3, 'cherry'), (2, 'apple'), (1, 'banana')]# 应用三:字典列表排序
# 示例1: 对字典列表按照某个键的值进行升序排序
# 创建一个包含字典的列表
dict_list = [{'name': 'Myelsa', 'age': 18},{'name': 'Bruce', 'age': 6},{'name': 'Jimmy', 'age': 15},
]
# 使用sorted()函数和key参数,按照'age'键的值进行升序排序
sorted_dict_list = sorted(dict_list, key=lambda item: item['age'])
# 打印排序后的列表
print(sorted_dict_list)
# [{'name': 'Bruce', 'age': 6}, {'name': 'Jimmy', 'age': 15}, {'name': 'Myelsa', 'age': 18}]# 示例2: 对字典列表按照某个键的值进行降序排序
# 创建一个包含字典的列表
dict_list = [{'name': 'Myelsa', 'age': 18},{'name': 'Bruce', 'age': 6},{'name': 'Jimmy', 'age': 15},
]
# 使用sorted()函数和key参数,以及reverse参数,按照'age'键的值进行降序排序
sorted_dict_list_desc = sorted(dict_list, key=lambda item: item['age'], reverse=True)
# 打印排序后的列表
print(sorted_dict_list_desc)
# [{'name': 'Myelsa', 'age': 18}, {'name': 'Jimmy', 'age': 15}, {'name': 'Bruce', 'age': 6}]# 示例3: 对字典列表按照多个键进行排序(先按一个键升序,后按另一个键降序)
# 创建一个包含字典的列表
dict_list = [{'name': 'Myelsa', 'age': 18},{'name': 'Bruce', 'age': 6},{'name': 'Jimmy', 'age': 15},
]
# 假设我们想要先按'age'升序排序,然后按'name'降序排序
sorted_dict_list_multi = sorted(dict_list, key=lambda item: (
item['age'], -ord(item['name'][0])))  # 使用ord()将字符串的第一个字符转换为ASCII值以便排序
# 打印排序后的列表
print(sorted_dict_list_multi)
# [{'name': 'Bruce', 'age': 6}, {'name': 'Jimmy', 'age': 15}, {'name': 'Myelsa', 'age': 18}]# 应用四:字符串列表排序
# 示例1: 对字符串列表进行升序排序
# 创建一个字符串列表
string_list = ['banana', 'apple', 'cherry', 'orange']
# 使用sorted()函数进行升序排序
sorted_strings = sorted(string_list)
# 打印排序后的列表
print(sorted_strings)
# ['apple', 'banana', 'cherry', 'orange']# 示例2: 对字符串列表进行降序排序
# 创建一个字符串列表
string_list = ['banana', 'apple', 'cherry', 'orange']
# 使用sorted()函数和 reverse 参数进行降序排序
sorted_strings_desc = sorted(string_list, reverse=True)
# 打印排序后的列表
print(sorted_strings_desc)
# ['orange', 'cherry', 'banana', 'apple']# 示例3: 对字符串列表按字符串长度进行排序
# 创建一个字符串列表
string_list = ['banana', 'apple', 'cherry', 'orange']
# 使用sorted()函数和key参数,按字符串长度进行排序
sorted_strings_by_length = sorted(string_list, key=len)
# 打印排序后的列表
print(sorted_strings_by_length)
# ['apple', 'banana', 'cherry', 'orange']# 示例4: 对字符串列表按字符串中某个字符的位置进行排序
# 创建一个字符串列表
string_list = ['banana', 'apple', 'cherry', 'orange']
# 假设我们想要根据字符串中'a'的第一个出现位置进行排序
# 使用sorted()函数和自定义的key函数
def find_first_a(s):return s.find('a') if 'a' in s else float('inf')  # 如果'a'不在字符串中,返回无穷大
sorted_strings_by_a_position = sorted(string_list, key=find_first_a)
# 打印排序后的列表
print(sorted_strings_by_a_position)  # 输出将会基于'a'在每个字符串中的第一个出现位置进行排序
# ['apple', 'banana', 'orange', 'cherry']# 应用五:自定义对象排序
class Person:def __init__(self, name, age):self.name = nameself.age = agedef __repr__(self):return f'Person({self.name}, {self.age})'
# 创建一个Person对象的列表
people = [Person('Myelsa', 18),Person('Bruce', 6),Person('Jimmy', 15),
]
# 使用sorted()函数和lambda表达式作为key函数,按age属性进行升序排序
sorted_people_by_age = sorted(people, key=lambda person: person.age)
# 打印排序后的列表
print(sorted_people_by_age)
# 使用sorted()函数和reverse参数,按age属性进行降序排序
sorted_people_by_age_desc = sorted(people, key=lambda person: person.age, reverse=True)
# 打印排序后的列表
print(sorted_people_by_age_desc)
# 如果你想先按age升序排序,然后按name升序排序(在age相同的情况下)
sorted_people_multi = sorted(people, key=lambda person: (person.age, person.name))
# 打印排序后的列表
print(sorted_people_multi)
# [Person(Bruce, 6), Person(Jimmy, 15), Person(Myelsa, 18)]
# [Person(Myelsa, 18), Person(Jimmy, 15), Person(Bruce, 6)]
# [Person(Bruce, 6), Person(Jimmy, 15), Person(Myelsa, 18)]# 应用六:复杂对象排序
class Employee:def __init__(self, name, department, salary):self.name = nameself.department = departmentself.salary = salarydef __repr__(self):return f'Employee({self.name}, {self.department}, {self.salary})'
# 创建一个 Employee 对象的列表
employees = [Employee('Lucy', 'HR', 50000),Employee('Bruce', 'Engineering', 60000),Employee('Jimmy', 'Engineering', 55000),Employee('David', 'HR', 52000),
]
# 使用sorted()函数和lambda表达式作为key函数,首先按部门排序(字母顺序),然后按薪水降序排序
sorted_employees = sorted(employees, key=lambda emp: (emp.department, -emp.salary))
# 打印排序后的列表
print(sorted_employees)
# 如果你想在薪水相同时再按名字排序
sorted_employees_full = sorted(employees, key=lambda emp: (emp.department, -emp.salary, emp.name))
# 打印排序后的列表
print(sorted_employees_full)
# [Employee(Bruce, Engineering, 60000), Employee(Jimmy, Engineering, 55000), Employee(David, HR, 52000), Employee(Lucy, HR, 50000)]
# [Employee(Bruce, Engineering, 60000), Employee(Jimmy, Engineering, 55000), Employee(David, HR, 52000), Employee(Lucy, HR, 50000)]# 应用七:处理文件和数据集
# 读取文件并分割每行的数据
with open('test.txt', 'r') as file:data = [line.strip().split() for line in file]
# 将数据转换为可以排序的形式(例如,将年龄转换为整数)
data_with_ages = [(name, int(age)) for name, age in data]
# 使用sorted()函数对数据进行排序(按年龄升序)
sorted_data = sorted(data_with_ages, key=lambda x: x[1])
# 如果需要,你可以将排序后的数据转换回原始格式(名字和年龄作为字符串)
sorted_data_str = [(name, str(age)) for name, age in sorted_data]
# 打印排序后的数据
for name, age in sorted_data_str:print(f"{name} {age}")
# apple 24
# banana 32
# cherry 46
# orange 58# 应用八:算法和数据结构
# 假设我们有两个已排序的列表
list1 = [1, 3, 5, 7]
list2 = [2, 4, 6, 8]
# 使用sorted()函数和列表推导式来合并并排序两个列表
# 注意:这不是最高效的方法,因为它会重新排序合并后的列表
# 通常我们会使用双指针法或heapq.merge()来合并已排序列表
merged_list = sorted(list1 + list2)
print(merged_list)
# 更高效的方法(不使用sorted())
def merge_sorted_lists(list1, list2):merged = []i = j = 0while i < len(list1) and j < len(list2):if list1[i] < list2[j]:merged.append(list1[i])i += 1else:merged.append(list2[j])j += 1# 添加剩余的元素(如果有的话)merged.extend(list1[i:])merged.extend(list2[j:])return merged
# 使用更高效的方法合并列表
efficient_merged_list = merge_sorted_lists(list1, list2)
print(efficient_merged_list)
# [1, 2, 3, 4, 5, 6, 7, 8]
# [1, 2, 3, 4, 5, 6, 7, 8]# 应用九:与生成器结合使用
# 定义一个生成器,它生成从1到10的平方数
def squares_generator(n):for i in range(1, n + 1):yield i ** 2
# 使用sorted()函数与生成器结合,按从小到大的顺序对平方数进行排序
sorted_squares = sorted(squares_generator(10))
# 打印排序后的平方数
print(sorted_squares)
# 另一个示例:使用sorted()和lambda表达式与生成器结合,按从大到小的顺序对平方数进行排序
sorted_squares_desc = sorted(squares_generator(10), reverse=True)
# 打印按降序排序后的平方数
print(sorted_squares_desc)
# 如果你想要根据某种复杂的逻辑进行排序,你可以使用lambda表达式
# 假设我们想要根据平方数的奇偶性进行排序,奇数在前,偶数在后
sorted_squares_odd_even = sorted(squares_generator(10), key=lambda x: (x % 2, x))
# 打印按奇偶性排序后的平方数
print(sorted_squares_odd_even)
# 注意:由于奇数和偶数各自内部还是按数值大小排序的,所以结果可能因Python版本或实现细节略有不同
# [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
# [100, 81, 64, 49, 36, 25, 16, 9, 4, 1]
# [4, 16, 36, 64, 100, 1, 9, 25, 49, 81]# 应用十:排序后切片操作
# 假设我们有一个包含整数的列表
numbers = [3, 6, 10, 8, 10, 24, 5, 11]
# 使用sorted()函数对列表进行排序
sorted_numbers = sorted(numbers)
# 打印排序后的整个列表
print("Sorted numbers:", sorted_numbers)
# 使用切片操作获取排序后列表的前三个元素
first_three = sorted_numbers[:3]
# 打印切片后的列表
print("First three elements:", first_three)
# 使用切片操作获取排序后列表的中间三个元素(如果列表长度大于或等于5)
middle_three = sorted_numbers[1:4]  # 注意:切片操作是左闭右开的
# 打印切片后的列表
print("Middle three elements:", middle_three)
# 使用切片操作获取排序后列表的最后两个元素
last_two = sorted_numbers[-2:]
# 打印切片后的列表
print("Last two elements:", last_two)
# 注意:切片操作不会修改原始列表,而是返回一个新的列表切片
print("Original list is unchanged:", numbers)
# Sorted numbers: [3, 5, 6, 8, 10, 10, 11, 24]
# First three elements: [3, 5, 6]
# Middle three elements: [5, 6, 8]
# Last two elements: [11, 24]
# Original list is unchanged: [3, 6, 10, 8, 10, 24, 5, 11]# 应用十一:与列表推导式结合使用
# 示例1:将字符串列表转换为整数列表并排序
# 假设我们有一个包含数字的字符串列表
string_numbers = ['3', '6', '10', '8', '10', '24', '5', '11']
# 使用列表推导式将字符串转换为整数,并使用sorted()排序
sorted_int_numbers = sorted(int(num) for num in string_numbers)
print(sorted_int_numbers)
# [3, 5, 6, 8, 10, 10, 11, 24]# 示例2:根据字典列表中某个键的值进行排序
# 假设我们有一个字典列表,每个字典代表一个学生,包含姓名和分数
students = [{'name': 'Myelsa', 'score': 98},{'name': 'Bruce', 'score': 85},{'name': 'Jimmy', 'score': 95}]
# 使用列表推导式和sorted()按分数排序学生(降序)
sorted_students_desc = sorted(students, key=lambda s: s['score'], reverse=True)
for student in sorted_students_desc:print(student['name'], student['score'])
# Myelsa 98
# Jimmy 95
# Bruce 85# 示例3:根据元组列表中元组的多个元素进行排序
# 假设我们有一个元组列表,每个元组包含两个数字
tuples_list = [(3, 6), (10, 8), (10, 24), (5, 11)]
# 使用列表推导式和sorted()先按第一个元素排序,然后按第二个元素排序
sorted_tuples = sorted(tuples_list, key=lambda t: (t[0], t[1]))
print(sorted_tuples)
# [(3, 6), (5, 11), (10, 8), (10, 24)]
1-2、VBA:
略,待后补。
2、推荐阅读:

2-1、Python-VBA函数之旅-round()函数

Python算法之旅:Algorithm

Python函数之旅:Functions

个人主页: https://blog.csdn.net/ygb_1024?spm=1010.2135.3001.5421

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3031912.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Python计算器程序代码

from tkinter import * import random class App: def __init__(self, master): self.master master self.initwidgets() #表达式的值 self.expr None def initwidgets(self): #定义一个输入组件 self.show Label(relief SUNKEN, font (Courier New, 24), width 25, bg …

一个“彩光”的自白:入室10万间的变革路

从0到10W 锐捷以太彩光的每一步 2021年 以太全光奠基 锐捷网络创新性提出了以太全光路线的代表性方案——极简以太全光解决方案1.0,在采用光纤作为传播介质的基础上,将交换机直接下沉至房间内。这一举措不仅简化了布线,新增业务只需在房间内灵活扩展,即可完成终端入网,而且通…

Leetcode—946. 验证栈序列【中等】

2024每日刷题&#xff08;133&#xff09; Leetcode—946. 验证栈序列 实现代码 class Solution { public:bool validateStackSequences(vector<int>& pushed, vector<int>& popped) {int left 0;for(int i 0; i < popped.size(); i) {while(left &…

数据结构(十三)----几种特殊的树

目录 一.二叉排序树 1.二叉排序树的查找 2.二叉排序树的插入 3.二叉排序树的构造 4.二叉树的删除 5.二叉排序树的查找效率 二.平衡二叉树 1.平衡二叉树的插入 2.平衡二叉树的查找效率 3.平衡二叉树的删除 三.红黑树 1.红黑树的概念 2.红黑树的查找 3.红黑树的插入…

QT学习(1)——创建第一个QT程序,信号和槽,打开关闭窗口的案例

目录 引出规范和帮助文档创建第一个Qt程序对象树概念信号signal槽slot自定义信号和槽1.自定义信号2.自定义槽3.建立连接4.进行触发 自定义信号重载带参数的按钮触发信号触发信号拓展 lambda表达式返回值mutable修饰案例 打开关闭窗口案例 总结 引出 QT学习&#xff08;1&#…

导出QQ好友列表、群列表、群员列表

MENU 准备工作在浏览器地址栏中输入地址使用F12快捷键打开开发者工具(浏览器控制台)点击头像登入网站(推荐)或手机扫码登录获取群列表获取好友列表获取群员列表 准备工作 一台带有浏览器的电脑 在浏览器地址栏中输入地址 https://qun.qq.com/member.html 使用F12快捷键打开开发…

一文搞懂反射,还有谁不懂,直接甩给他

Hi,大家好&#xff0c;我是抢老婆酸奶的小肥仔。 反射&#xff0c;在我们日常开发中无时无刻&#xff0c;被大量运用在框架代码和工具代码中&#xff0c;反射可以通俗点讲就是一个类的自我剖析&#xff0c;通过反射可以获取到这个类所有信息&#xff0c;包括&#xff1a;属性&…

美国政府发布新的国际网络空间和数字政策战略(上)

文章目录 前言一、战略内容介绍二、数字团结的含义三、如何建立数字团结前言 美国务院5月6日正式发布《美国国际网络空间和数字政策战略:迈向创新、安全和尊重权利的数字未来》,旨在指导国际社会参与技术外交并推动《美国国家安全战略》和《美国国家网络安全战略》。 美国务…

创新指南|将会话式AI聊天机器人纳入PLG增长战略

想象一个繁荣的数字城市广场&#xff0c;志同道合的人们在这里分享他们的激情、经验和知识。想象一个将房东与旅行者、顾客与司机、人们与他们喜爱的品牌无缝连接起来的平台。在这个世界里&#xff0c;用户交流促进增长&#xff0c;社区成为推动力。 如果您的应用程序天生不符…

视频编辑软件pitivi基本功之创建标题片段

视频编辑软件pitivi基本功之创建标题片段 台式机的系统是openSUSE-Leap-15.5-DVD-x86_64 一、素材来源 《视频编辑软件pitivi基本功之使用SSR录制电脑屏幕》 https://blog.csdn.net/weixin_42145772/article/details/138597608?spm1001.2014.3001.5502 根据上面文章的方法得…

考了PMP后,NPDP到底还有没有必要考?NPDP通关宝典来啦!

NPDP和PMP相比&#xff0c;两者的相同点都是由美国发起的&#xff0c;都是管理行业的证书。区别也很大&#xff0c;PMP是项目经理国际认证证书&#xff0c;NPDP是产品经理认证证书&#xff0c;不过PMP已经由外专局引入国内二十多年了&#xff0c;在市面上知名度更高&#xff0c…

【数据结构】第五讲:栈和队列

个人主页&#xff1a;深情秋刀鱼-CSDN博客 数据结构专栏&#xff1a;数据结构与算法 源码获取&#xff1a;数据结构: 上传我写的关于数据结构的代码 (gitee.com) 目录 一、栈 1.栈的定义 2.栈的实现 a.栈结构的定义 b.初始化 c.扩容 d.入栈 e.出栈 f.打印 g.取栈顶元素…

Java医院绩效管理应用系统源码java+ maven+ avue 公立医院绩效考核管理系统源码 支持二开

Java医院绩效管理应用系统源码java maven avue 公立医院绩效考核管理系统源码 支持二开 医院绩效管理系统解决方案紧扣新医改形势下医院绩效管理的要求&#xff0c;以“工作量为基础的考核方案”为核心思想&#xff0c;结合患者满意度、服务质量、技术难度、工作效率、医德医风…

Java入门基础学习笔记16——运算符

package cn.ensource.operator;public class OperatorDemo1 {public static void main(String[] args) {// 目标&#xff1a;掌握基本的算术运算符的使用int a 10;int b 2;System.out.println(a b);System.out.println(a - b);System.out.println(a * b); // 20System.out.…

Pandas DataFrame行迭代:初学者指南

在数据分析中&#xff0c;Pandas是一个强大的Python库&#xff0c;它提供了快速、灵活以及表达力强的数据结构&#xff0c;旨在使“关系”或“标签”数据的操作既简单又直观。对于初学者来说&#xff0c;理解如何迭代DataFrame的行是一项基础但重要的技能。本文将通过通俗易懂的…

一文讲透亚马逊云三层架构

关于三层架构&#xff0c;我们有很多想说的话&#xff1a; &#xff08;以下内容以下都在VPC中&#xff09; cloudfront做CDN加速网关规划S3做静态网站托管APIGateway作为统一网关入口认证/限流Lambda 作为传统后端&#xff0c;并发&#xff0c;底层架构Redis缓存DDB作为持久化…

CH340 RTS DTR引脚编程驱动OLED

运行结果 硬件连接&#xff08;在连接线上串接300R电阻&#xff09; 下面是c#实现代码 using System; using System.Collections.Generic; using System.Linq; using System.Security.Cryptography; using System.Text; using System.Threading.Tasks;using uint8 System.Byt…

5月10日学习记录

[NCTF2019]True XML cookbook(xxe漏洞利用) 这题是关于xxe漏洞的实际应用&#xff0c;利用xxe漏洞的外部实体来进行ssrf探针内网的主机 和[NCTF2019]Fake XML cookbook的区别就在于xxe漏洞的利用方向&#xff0c;一个是命令执行&#xff0c;一个是SSRF 看题&#xff0c;打开…

26、Flink 的状态数据结构升级

状态数据结构升级 a&#xff09;概述 Flink 流应用通常被设计为永远或者长时间运行&#xff0c;与所有长期运行的服务一样&#xff0c;应用程序需要随着业务的迭代而进行调整&#xff0c;应用所处理的数据 schema 也会随着进行变化。 升级状态类型的数据 schema &#xff0c…

【redis】Redis五种常用数据类型和内部编码,以及对String字符串类型的总结

˃͈꒵˂͈꒱ write in front ꒰˃͈꒵˂͈꒱ ʕ̯•͡˔•̯᷅ʔ大家好&#xff0c;我是xiaoxie.希望你看完之后,有不足之处请多多谅解&#xff0c;让我们一起共同进步૮₍❀ᴗ͈ . ᴗ͈ აxiaoxieʕ̯•͡˔•̯᷅ʔ—CSDN博客 本文由xiaoxieʕ̯•͡˔•̯᷅ʔ 原创 CSDN 如…