Python-VBA函数之旅-sorted函数

news2024/11/20 7:03:33

目录

一、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 = name
        self.age = age
    def __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 = name
        self.department = department
        self.salary = salary
    def __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 = 0
    while i < len(list1) and j < len(list2):
        if list1[i] < list2[j]:
            merged.append(list1[i])
            i += 1
        else:
            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://www.coloradmin.cn/o/1663574.html

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

相关文章

实现WPF中的数据更新 属性通知界面:INotifyPropertyChanged接口

在WPF (Windows Presentation Foundation) 应用程序中&#xff0c;当数据发生变化时&#xff0c;通常希望UI能够自动更新以反映这些变化。为了实现这一功能&#xff0c;WPF 提供了数据绑定机制&#xff0c;并且配合 INotifyPropertyChanged 接口使用&#xff0c;可以在数据模型…

VMware 不能拍摄快照

问题&#xff1a; 拍摄快照后&#xff0c;会出现这个弹窗&#xff0c;然后虚拟机就直接自动退出了&#xff0c;还会弹出一个框&#xff1a; 解决方法&#xff1a; 我用的是 window11 和 VMware16.0.0 这是因为VM16与window11&#xff0c;二者之间版本不兼容问题&#xff0c;可…

Hierarchical File Systems are Dead——论文泛读

HotOS 2009 Paper 分布式元数据论文阅读笔记整理 问题 文件系统一直采用分层名称空间&#xff0c;随着用户与越来越多的数据交互&#xff0c;并且对搜索能力的要求越来越高&#xff0c;这样一个简单的分层模型已经过时了。例如&#xff0c;查找照片时&#xff0c;用户描述他们…

设计模式 六大原则之单一职责原则

文章目录 概述代码例子小结 概述 先看下定义吧&#xff0c;如下&#xff1a; 单一职责原则的定义描述非常简单&#xff0c;也不难理解。一个类只负责完成一个职责或者功能。也就是说在类的设计中&#xff0c; 我们不要设计大而全的类,而是要设计粒度小、功能单一的类。 代码例…

OBS插件--音频采集

音频采集 音频采集是一款 源 插件,类似于OBS的win-capture/game-capture&#xff0c;允许从特定应用程序捕获音频&#xff0c;而不是捕获整个系统的音频。避免了因为特定音频的采集而需要引入第三方软件&#xff0c;而且时延也非常低。 下面截图演示下操作步骤&#xff1a; …

随身wifi网速测评!讯唐随身wifi和格行随身wifi哪个网速快?随身wifi哪个品牌最好用?

最近收到很多网友私信&#xff0c;希望推荐一款好用性价比高的随身wifi。通过各平台排行榜选出了公认口碑最好的格行随身wifi&#xff1b;又挑选了网友们经常问的的讯唐随身wifi&#xff1b;两个一起来实测一下&#xff0c;哪款更好用&#xff01; 【品牌评测】 格行随身wifi&…

施耐德和施耐德EOCR什么关系?

施耐德中国和施耐德韩国EOCR的关系主要体现在施耐德电气集团对韩国三和EOCR的收购和整合。 韩国三和EOCR株式会社是韩国主要的电动机保护器生产企业&#xff0c;由金仁锡博士&#xff08;施耐德电气集团韩国首席执行官&#xff09;于1981年建立。在2001年&#xff0c;为了把企…

机器学习-12-sklearn案例02-集成学习

总结 参考 菜菜的sklearn课堂——随机森林 算法使用过程 #导入数据集模块 from sklearn import datasets #分别加载iris和digits数据集 iris datasets.load_iris() #鸢尾花数据集 # print(dir(datasets)) # print(iris_dataset.keys()) # dict_keys([data, target, frame…

【网络基础】网络层 之 IP协议与分片、网段划分、IP地址分类、子网掩码与路由

文章目录 网络层1. IP协议段格式1.1 分片1.2 *为什么存在分片 / 分片是什么 ?*1.3 *如何理解 / 实现 分片与组装*1.4 深入具体&#xff1a;分片 和 组装 的过程1.5 为什么不推荐 分片 2. 网段划分2.1 举例&#xff1a;国际间通信 && 国家内通信2.2 理解网段划分 3. IP…

Swift 初学者趣谈:一招教你记住模式匹配 if case let 的语法,永不忘记

概览 相信初学 Swift 头发茂盛的小伙伴们都对 Swift 简洁且极富表现力的语法倾心不已。不过凡事皆有例外&#xff0c;模式匹配&#xff08;Pattern Matching&#xff09;的语法就是其中之一。 在本篇博文中&#xff0c;您将学到如下内容 概览1. 诡异的 if case let 语法&…

【半夜学习MySQL】数据库中的数据类型(含数值类型、文本二进制类型、时间类型、String类型详谈)

&#x1f3e0;关于专栏&#xff1a;半夜学习MySQL专栏用于记录MySQL数据相关内容。 &#x1f3af;每天努力一点点&#xff0c;技术变化看得见 文章目录 数据类型分类数值类型bit类型tinyint类型int类型float类型decimal类型 文本、二进制类型char类型varchar类型 时间类型Strin…

初识C语言——第十七天

选择语句&#xff1a;switch switch语句&#xff08;整型表达式&#xff09; { 语句项&#xff1a; } 而语句项是什么呢&#xff1f; //是一些case语句&#xff1a; //如下 case 整形常量表达式&#xff1b;常量可以&#xff0c;字符也可以&#xff08;因为字符存储的时…

Java并发编程:用户态、内核态和cache line

文章目录 一、介绍二、java中那些操作使用了内核态三、cache line的概念四、CPU缓存一致性协议 一、介绍 用户态和内核态是操作系统的两种运行状态&#xff0c;它们分别对应于不同的权限级别和访问能力。 用户态&#xff08;User Mode&#xff09;&#xff1a;这是应用程序运…

geotrust企业通配符证书2990

随着时代的变化&#xff0c;人们获取信息的方式由报纸、书籍变为手机、电脑&#xff0c;因此很多企事业单位用户开始在互联网中创建网站来进行宣传&#xff0c;吸引客户。为了维护网站安全环境&#xff0c;保护客户数据&#xff0c;企事业单位也开始使用SSL数字证书&#xff0c…

在做题中学习(55):一维前缀和模板

【模板】前缀和_牛客题霸_牛客网 (nowcoder.com) 题目解释&#xff1a; 注意&#xff1a;下标从1开始的。 l 和 r就是对这n个整数去取一个区间&#xff0c;例如示例一&#xff1a; (1,2) 区间 就是算出1 2 4 中 1&#xff0c;2下标对应值的和&#xff0c;12 3 同理,(2,3) …

煤矿防爆气象传感器

TH-WFB5随着工业技术的不断发展&#xff0c;煤矿作为我国能源领域的重要组成部分&#xff0c;其安全生产问题一直备受关注。在煤矿生产过程中&#xff0c;井下环境复杂多变&#xff0c;瓦斯、煤尘等易燃易爆物质的存在使得井下安全工作尤为重要。为了提高煤矿生产的安全性&…

综合能力 | 误差 | 学习笔记

误差指真值与观测值的差值。 误差分为系统误差&#xff08;消除方法&#xff1a;观测方法、仪器校正、修正等&#xff09;、偶然误差&#xff08;符合正态分布规律&#xff0c;进行计算纠正&#xff09;、粗差&#xff08;一般舍弃&#xff09;。 中误差&#xff08;均方差或标…

YOLO系列笔记(十四)——Compute Canada计算平台及其常见命令介绍

Compute Canada平台及其常见命令介绍 前言优势使用方法1. 检查模块不带版本号带版本号 2. 加载模块3. 检查模块是否加载成功4. 创建虚拟环境5. 编写作业脚本6. 提交作业7. 监控作业状态8. 查看作业开始预计时间9. 查看作业的详细输出10. 取消作业 注意结语 前言 大家好&#x…

十天学会单片机可能吗?单片机入门需要多久?

在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「单片机的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01; 十天学“会”单片机&#xf…

每周打靶VulnHub靶机-DEATHNOTE_ 1

Deathnote: 1 靶机传送门 don’t waste too much time thinking outside the box . It is a Straight forward box . 不要浪费太多时间跳出框框思考问题。这是一个很直接的盒子 是不是所有线索都在这个盒子里&#xff1f; 1.信息搜集 使用nmap进行域内存活主机扫描发现target …