Python青少年简明教程:列表(List)、元组(tuple)和字典(dict)

Python青少年简明教程:列表(List)、元组(tuple)和字典(dict)

在Python中,列表(List)、元组(Tuple)和字典(Dict)既是常用的数据类型,也是常用的数据结构。

【数据类型:在编程语言中,数据类型定义了一个变量的存储方式以及可以对该变量执行的操作。从 Python 语言的角度来看,Python 中的列表、元组和字典都属于数据类型。

数据结构:数据结构是指一种组织和存储数据的方式,使得数据可以被有效地访问和修改。从计算机科学的角度来看,列表、元组和字典在Python中也是常用的数据结构,因为它们定义了组织和存储数据的方式。列表是动态数组结构,元组是静态数组结构,字典是哈希表结构。】

列表(list

在Python中,没有传统意义上像C或Java那样的“数组”数据类型,但Python提供了几种可以模拟数组行为的数据结构,如列表(list)、元组(tuple)其中最常用的是列表(List)。

列表是一种可变的、有序的数据结构,可以随时添加和删除其中的元素。

说明:从列表中取值时,如果 超出索引范围,程序会报错。

列表(list)的元素是按顺序存储的,每个元素都有一个对应的序号,也称为索引(index)。理解列表的索引对于访问和操作列表元素至关重要。

正向索引:

从左到右,从0开始递增,第一个元素的索引是0,第二个元素的索引是1,以此类推。

负向索引:

从右到左,从-1开始递减,最后一个元素的索引是-1,倒数第二个元素的索引是-2,以此类推。

Python 的列表是一个可变的序列,允许你存储不同类型的元素。

创建列表(List)的方法或方式

1.使用方括号 []:

my_list = [1, 2, 3, 4, 5]

list1 = [1, 'a', True, 3.14]

2.使用 list() 构造函数:

my_list = list(range(1, 6))  # 创建一个包含1到5的列表

list2 = list()  # 创建空列表

list3 = list("hello")  # 将字符串转换为字符列表

list4 = list(range(5))  # 使用 range 创建列表

3.列表推导式(后面还有介绍):

my_list = [x * 2 for x in range(5)]  # 生成 [0, 2, 4, 6, 8]

遍历列表中的所有元素

可以使用 for 循环遍历列表中的所有元素。例如:

fruits = ["苹果", "香蕉", "橘子", "草莓"]
for fruit in fruits:print(fruit)

列表切片(slicing)

在Python中,允许你获取列表中的一部分元素,并可以返回一个新的列表。切片操作的基本语法如下:

list[start:stop:step]

其中

start(开始位置): 切片开始的位置(包括该位置的元素)。如果省略,默认为列表的开始位置(索引0)。

stop(结束位置): 切片结束的位置(不包括该位置的元素)。如果省略,默认为列表的结束位置(即列表的长度)。

step(步长): 切片时元素之间的间隔。如果省略,默认为1。步长可以是正数也可以是负数,分别代表向前或向后切片。

列表切片示例:

# 创建一个示例列表
my_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]# 基本切片
print(my_list[2:5])    # 输出:[2, 3, 4]# 从起始位置开始切片
print(my_list[:4])     # 输出:[0, 1, 2, 3]# 从特定位置切片到结束
print(my_list[5:])     # 输出:[5, 6, 7, 8, 9]# 使用步长
print(my_list[::2])    # 输出:[0, 2, 4, 6, 8]# 反向切片
print(my_list[::-1])   # 输出:[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]# 指定步长
print(my_list[1:8:3])  # 输出:[1, 4, 7]# 使用负索引
print(my_list[-3:])    # 输出:[7, 8, 9]
print(my_list[:-3])     # 输出:[0, 1, 2, 3, 4, 5, 6]
print(my_list[-5:-2])   # 输出:[5, 6, 7]
print(my_list[::-1])   # 使用负步长可以反转列表:[9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

列表(List)的方法

“方法”指的是绑定到某个对象的函数,或者说,“方法”是指属于某个对象的函数,能够直接操作或查询该对象的数据。

在Python中,对于列表(list)这样的对象,方法是指那些可以在列表上调用的函数,这些函数能够直接操作列表中的数据。换句话说,方法是属于特定对象的函数,它们定义了对象的行为。

在Python中,列表(list)是一个非常灵活的数据结构,它提供了多种方法来操作和管理数据。以下是一些常用的列表方法及其示例:

1. append()

向列表末尾添加一个新元素。

my_list = [1, 2, 3]

my_list.append(4)

print(my_list)  # 输出: [1, 2, 3, 4]

2. extend()

将另一个可迭代对象的元素添加到列表末尾。

my_list = [1, 2, 3]

my_list.extend([4, 5])

print(my_list)  # 输出: [1, 2, 3, 4, 5]

3. insert()

在指定位置插入一个元素。

my_list = [1, 2, 3]

my_list.insert(1, 'a')

print(my_list)  # 输出: [1, 'a', 2, 3]

4. remove()

删除列表中第一个匹配的元素。如果元素不存在,会引发 ValueError。

my_list = [1, 2, 3, 2]

my_list.remove(2)

print(my_list)  # 输出: [1, 3, 2]

还可以使用clear() 方法,用于清空列表中的所有元素。

lst = [1, 2, 3, 4]

lst.clear()  # lst 变为 []

5. pop()

移除并返回列表中指定位置的元素(默认最后一个元素)。如果列表为空,会引发 IndexError。

my_list = [1, 2, 3]

last_element = my_list.pop()

print(last_element)  # 输出: 3

print(my_list)       # 输出: [1, 2]

6. index()

返回指定元素的第一个索引。如果元素不存在,会引发 ValueError。

my_list = [1, 2, 3]

index_of_2 = my_list.index(2)

print(index_of_2)  # 输出: 1

7. count()

返回列表中指定元素的出现次数。

my_list = [1, 2, 2, 3, 2]

count_of_2 = my_list.count(2)

print(count_of_2)  # 输出: 3

8. sort()

对列表中的元素进行排序。排序是原地进行的,即改变原列表。可以通过 reverse=True 参数进行降序排序。

my_list = [3, 1, 2]

my_list.sort()

print(my_list)  # 输出: [1, 2, 3]

my_list.sort(reverse=True)

print(my_list)  # 输出: [3, 2, 1]

9. reverse()

反转列表中的元素。排序是原地进行的,即改变原列表。

my_list = [1, 2, 3]

my_list.reverse()

print(my_list)  # 输出: [3, 2, 1]

10. copy()

返回列表的浅拷贝。即创建一个新的列表,其中包含原列表的相同元素。

my_list = [1, 2, 3]

new_list = my_list.copy()

print(new_list)  # 输出: [1, 2, 3]

还可以使用del 语句删除列表中的单个元素或切片或整个列表。注意,它是 Python 的一个语句,而不是列表的方法。例如:

lst = [1, 2, 3, 4]

del lst[1]  # lst 变为 [1, 3, 4]

del lst  # 完全删除列表

del语句删除切片例子

lst2= [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

del lst2 [::2]  # 删除带步长的切片,lst2变为[1, 3, 5, 7, 9]

列表(List)的常用操作

Python中的列表(List)其它常用操作(不是方法但常用):

1. len(list)

功能:返回列表中的元素个数。

my_list = [1, 2, 3, 4, 5]

length = len(my_list)

print(length)  # 输出: 5

2. in 操作符

功能:检查某个元素是否存在于列表中。如果存在,返回 True;否则,返回 False。

my_list = [1, 2, 3, 4, 5]

print(3 in my_list)  # 输出: True

print(6 in my_list)  # 输出: False

3. 列表连接(+):将两个列表连接成一个新的列表。

list1 = [1, 2, 3]

list2 = [4, 5, 6]

combined_list = list1 + list2

print(combined_list)  # 输出: [1, 2, 3, 4, 5, 6]

4. 列表重复(*):重复列表中的元素。

my_list = [1, 2, 3]

repeated_list = my_list * 3

print(repeated_list)  # 输出: [1, 2, 3, 1, 2, 3, 1, 2, 3]

5. 列表拆包:将列表的元素拆分到多个变量中(通常用于函数返回值)。

my_list = [1, 2, 3]

a, b, c = my_list

print(a, b, c)  # 输出: 1 2 3

列表(list)模拟二维数组

Python本身没有内置的二维数组类型,但可以使用嵌套列表来实现类似的功能。示例:

# 创建一个3x3的二维数组
matrix = [[1, 2, 3],[4, 5, 6],[7, 8, 9]
]# 访问元素
print(matrix[0][0])  # 输出: 1
print(matrix[1][2])  # 输出: 6# 修改元素
matrix[2][1] = 10
print(matrix)  # 输出: [[1, 2, 3], [4, 5, 6], [7, 10, 9]]# 遍历二维数组
for row in matrix:for element in row:print(element, end=' ')print()  # 换行

列表综合例题

例1、创建一个包含100以内所有素数的列表

def is_prime(num):"""判断一个数是否为素数。"""if num <= 1:return Falsefor i in range(2, int(num**0.5) + 1):if num % i == 0:return Falsereturn Trueprimes = [num for num in range(2, 100) if is_prime(num)]
print(f"100 以内的所有素数:{primes}")

例2、使用列表的猜数字游戏

import randomdef play_guessing_game():"""猜数字游戏。"""secret_number = random.randint(1, 100)guesses = []attempts = 0print("欢迎来到猜数字游戏!")print("我已选择一个 1 到 100 之间的数字。")while True:try:guess = int(input("请输入你的猜测:"))guesses.append(guess)attempts += 1if guess < secret_number:print("太低了!")elif guess > secret_number:print("太高了!")else:print(f"恭喜你!你猜对了!你用了 {attempts} 次尝试。")print(f"你猜过的数字:{guesses}")breakexcept ValueError:print("请输入一个有效的数字。")play_guessing_game()

列表推导

使用列表推导可以简洁地创建新的列表。

列表推导(List Comprehension)是一种简洁而强大的 Python 语法,它允许你通过一行代码创建新的列表,而无需使用传统的 for 循环。它以一种紧凑且易读的方式表达列表创建逻辑。

列表推导的语法:

[expression for item in iterable if condition]

expression: 你想要在新的列表中包含的元素的表达式。

item: 迭代器中的每个元素。

iterable: 可迭代对象,例如列表、元组、字符串等。

condition (可选): 一个条件表达式,用于过滤可迭代对象中的元素。只有满足条件的元素才会被包含在新的列表中。

举例:

1)创建包含平方数的列表:
squares = [x**2 for x in range(10)]
print(squares)  # 输出: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
在这个例子中,x**2 是表达式,x 是迭代器中的每个元素,range(10) 是可迭代对象。代码将遍历 range(10) 中的每个数字,计算其平方,并将结果添加到新的列表 squares 中。

2)创建包含所有偶数的列表:
even_numbers = [x for x in range(10) if x % 2 == 0]
print(even_numbers)  # 输出: [0, 2, 4, 6, 8]
在这个例子中,x 是表达式,x 是迭代器中的每个元素,range(10) 是可迭代对象,x % 2 == 0 是条件表达式。代码将遍历 range(10) 中的每个数字,检查它是否为偶数,如果是,则将其添加到新的列表 even_numbers 中。

3)创建包含偶数的列表:
even_numbers = [x for x in range(20) if x % 2 == 0]

4)将列表中的所有字符串转换为大写:
words = ["apple", "banana", "orange"]
uppercase_words = [word.upper() for word in words]
print(uppercase_words)  # 输出: ['APPLE', 'BANANA', 'ORANGE']
在这个例子中,word.upper() 是表达式,word 是迭代器中的每个元素,words 是可迭代对象。代码将遍历 words 列表中的每个单词,将其转换为大写,并将结果添加到新的列表 uppercase_words 中。
 

除了列表推导式,Python还支持字典推导式和集合推导式,语法类似。

列表推导的优势:

简洁性: 列表推导比传统的 for 循环更简洁,代码更易读。

效率: 列表推导通常比传统的 for 循环更有效率,因为它们在底层使用 Python 的迭代器协议,减少了循环的开销。

可读性: 列表推导使代码更易于理解,因为它将列表创建逻辑集中在一个表达式中。

元组(tuple

元组是一个有序的不可变序列,可以包含多个元素,元素可以是不同的数据类型。

Python中元组(tuple)的元素索引与列表(list)的索引在索引和切片操作上表现相同,主要区别在于元组是不可变的,而列表是可变的。

括号的使用:虽然元组可以用圆括号 () 来定义,但实际上,如果元素之间用逗号分隔,Python 也会自动识别为元组。例如,1, 2, 3 被视为一个元组,在不使用括号的情况下。决定生成元组的其实是逗号而不是圆括号。

不可变性:元组一旦创建,就不能修改(例如,不能添加、删除或更改元素)。这与列表不同,列表是可变的。

元组的创建:可以通过以下方式创建元组:

使用括号:t = (1, 2, 3)

不使用括号:t = 1, 2, 3

单个元素元组需加逗号:t = (1,)

如果创建的元组中只有一个字符串类型的元素时,该元素后面必须要加一个逗号,否则 Python 解释器会将它视为字符串。

创建元组(Tuple)的方法或方式

1.使用小括号 ():

my_tuple = (1, 2, 3, 4, 5)

也可以不使用圆括号(推荐在多元素时使用圆括号):

Tuple1 = 1, 2, 3, 4, 5

2.使用 tuple() 构造函数:

Tuple2 = tuple()  # 创建空元组

Tuple3 = tuple([1, 2, 3])  # 将列表转换为元组

Tuple4 = tuple("hello")  # 将字符串转换为字符元组

创建单元素元组,要注意使用逗号:

Tuple5 = (42,)

Tuple6 = 42,

访问元组元素

可以通过索引访问元组中的元素,例如,t[0] 将访问第一个元素。
t = (1, 'hello', [3, 4])
print(t[0])  # 输出: 1
print(t[-1])  # 输出: [3, 4]

元组常用方法
count(): 计算元素出现的次数
index(): 查找元素的索引
t = (1, 2, 2, 3, 4)
print(t.count(2))  # 输出: 2
print(t.index(3))  # 输出: 3
 

元组切片

Python中元组(tuple)的切片操作与列表(list)非常相似。两者都使用相同的切片语法,主要区别在于元组是不可变的,而列表是可变的。

元组切片都语法:

tuple[start:stop:step]

start 是切片的起始索引(包括该索引所在的元素)。

stop 是切片的结束索引(不包括该索引所在的元素)。

step 是步长,默认为 1。

示例:

# 创建一个元组和一个列表
my_tuple = (0, 1, 2, 3, 4, 5)# 基本切片
print(my_tuple[1:4])  # 输出: (1, 2, 3)# 使用步长
print(my_tuple[::2])  # 输出: (0, 2, 4)# 反向切片
print(my_tuple[::-1])  # 输出: (5, 4, 3, 2, 1, 0)

注意:

对元组进行切片会返回一个新的元组,而对列表进行切片会返回一个新的列表。您可以对列表切片的结果进行修改,但不能修改元组切片的结果。

python元组嵌套
元组可以嵌套,这意味着你可以在一个元组中包含其他元组。下面是一个关于元组嵌套的简单示例:
nested = ((1, 2), (3, 4))

元组与列表可以转换
t = (1, 2, 3)
l = list(t)  # 元组转列表
t2 = tuple(l)  # 列表转元组

元组特性(特点)及解释
☆不可变性:
含义:一旦创建,元组的内容就不能被改变。
解释:
不能修改现有元素的值。
不能添加新元素。
不能删除现有元素。
示例:
t = (1, 2, 3)
# t[0] = 4  # 这会引发 TypeError
# t.append(4)  # 元组没有 append 方法
# del t[0]  # 这也会引发 TypeError
注意:如果元组中包含可变对象(如列表),这些对象的内容可以改变。
☆有序:
含义:元组中的元素保持它们被创建时的顺序。
解释:
可以通过索引访问元素。
索引从 0 开始。
支持正向和反向索引。
示例:
t = ('a', 'b', 'c', 'd')
print(t[0])   # 输出: 'a'
print(t[-1])  # 输出: 'd'
☆允许重复元素:
含义:元组可以包含多个相同的值。
解释:
重复元素各自占据独立的位置和索引。
这与集合(set)不同,集合不允许重复。
示例:
t = (1, 2, 2, 3, 1)
print(t.count(1))  # 输出: 2
☆可以包含不同类型的数据:
含义:单个元组可以存储不同数据类型的元素。
解释:
这提供了很大的灵活性。
可以混合使用整数、字符串、列表等。
示例:
t = (1, "hello", [1, 2], (3, 4))
print(type(t[0]))  # 输出: <class 'int'>
print(type(t[1]))  # 输出: <class 'str'>
print(type(t[2]))  # 输出: <class 'list'>
print(type(t[3]))  # 输出: <class 'tuple'>


思考题,python元组能排序吗?
元组本身是不可变的(immutable),所以不能直接对元组进行排序。但是,我们可以使用sorted() 函数创建一个排序后的新元组。
sorted() 函数是 Python 内置的一个函数,用于对可迭代对象进行排序并返回一个新的列表。它不会修改原始数据,而是返回一个新的已排序列表。例如:
# 创建一个新的排序元组
original_tuple = (3, 1, 4, 1, 5, 9, 2)
sorted_tuple = tuple(sorted(original_tuple))
print(sorted_tuple)  # 输出: (1, 1, 2, 3, 4, 5, 9)
 

字典(dictdictionary)

字典是一种可变的、无序的数据结构,存储键值对(key-value pairs)。每个键(key)都是唯一的,并且可以通过键来快速查找对应的值(value)。

值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。

可以使用大括号 {} 或 dict() 函数来创建字典。

创建字典(Dict)的方法或方式

1.使用花括号 {}:
my_dict = {'name': 'Alice', 'age': 25 , 'city': 'Beijing' }
dict1 = {1: 'one', 2: 'two', 3: 'three'}
dict2 = {"西瓜": 2.6, "桃子": 2, "苹果":3, "樱桃":10.5}
dict3 = {"西瓜":"2.6元", "桃子": "2元", "苹果":"3元", "樱桃":"10.5元"}
2.使用 dict() 构造函数:
my_dict = dict(name='Alice', age=25)  # 关键字参数
dict4 = dict()  # 创建空字典
3.使用键值对列表:
my_dict = dict([('name', 'Alice'), ('age', 25)])  # 从列表创建字典
4.字典推导式:
my_dict = {x: x ** 2 for x in range(5)}  # 生成 {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}

访问字典的值
可以通过键访问字典中的值。
print(my_dict["name"])  # 输出: Alice
print(my_dict["age"])   # 输出: 25

修改字典
可以为字典中的键赋值、删除键值对或添加新键值对。例如:
# 修改值
my_dict["age"] = 26

# 添加新键值对
my_dict["city"] = "New York"

# 删除键值对
del my_dict["is_student"]

字典的方法

字典提供了多种内置方法来操作数据:

my_dict.keys():返回字典中的所有键。

my_dict.values():返回字典中的所有值。

my_dict.items():返回字典中的所有键值对。

my_dict.get(key):安全地获取键的值,如果键不存在返回 None。

my_dict.pop(key):删除指定键并返回其值。

my_dict.update(another_dict):用另一个字典更新当前字典。

字典的基本特性
☆键唯一性:
每个键在字典中必须是唯一的(字典使用哈希表实现,键的唯一性是哈希表的基本要求)。
行为:如果尝试插入已存在的键,新值会覆盖旧值。
示例:
d = {'a': 1, 'b': 2}
d['a'] = 3  # 覆盖旧值
print(d)  # 输出: {'a': 3, 'b': 2}
☆无序性:
定义:传统上,字典中的元素没有固定的顺序。
注意:虽然从 Python 3.7 开始,字典保持插入顺序,但这是一个实现细节,在使用时,你不能依赖于元素的顺序来访问数据。
影响:不能像列表那样通过数字索引访问元素。
示例:
d = {'c': 3, 'a': 1, 'b': 2}
print(d)  # 输出顺序可能是 {'c': 3, 'a': 1, 'b': 2},但不应依赖这个顺序
使用建议:如果需要有序存储,考虑使用 OrderedDict。
☆可变性:
字典的内容可以在创建后修改。可以添加新的键值对、修改现有键的值、删除键值对。
示例:
d = {'a': 1}
d['b'] = 2  # 添加新键值对
d['a'] = 10  # 修改现有键的值
del d['b']  # 删除键值对
☆键类型限制:
键必须是不可变(可哈希)的数据类型。
原因:字典使用哈希表实现,键的哈希值用于确定存储位置。
常用键类型:字符串、数字、元组(只包含不可变元素)。
值的类型:没有限制,可以是任何数据类型。
示例:
d = {
    'string': 'value',
    42: 'answer',
    (1, 2): 'tuple key',
    # [1, 2]: 'list'  # 这会引发错误,因为列表是可变的
}

字典综合示例

源码如下:

# 创建字典
person = {"name": "Alice","age": 30,"city": "Wonderland"
}# 访问字典
print(person["name"])  # 输出: Alice# 修改字典
person["age"] = 31# 添加新键值对
person["hobby"] = "Reading"# 删除键值对
del person["city"]# 使用字典方法
print(person.keys())    # 输出: dict_keys(['name', 'age', 'hobby'])
print(person.values())  # 输出: dict_values(['Alice', 31, 'Reading'])
print(person.items())   # 输出: dict_items([('name', 'Alice'), ('age', 31), ('hobby', 'Reading')])

 

解包(unpacking

Python 中,解包(unpacking)是指将一个可迭代对象(如列表、元组、字典等)中的元素提取出来,并分别赋值给多个变量的过程。

示例
1.序列解包:
将元组或列表中的元素解包到多个变量中。
# 使用元组解包
coordinates = (10, 20)
x, y = coordinates
print(x)  # 输出: 10
print(y)  # 输出: 20

# 使用列表解包
values = [1, 2, 3]
a, b, c = values
print(a)  # 输出: 1
print(b)  # 输出: 2
print(c)  # 输出: 3

2.字典解包:
可以使用 ** 来解包字典,将字典中的键值对传递给函数。
def print_info(name, age):
    print(f"Name: {name}, Age: {age}")

person = {'name': 'Alice', 'age': 30}
print_info(**person)  # 输出: Name: Alice, Age: 30

3.可变数量的解包:
使用星号 * 可以将剩余的元素捕获到一个列表中。

a, *b = [1, 2, 3, 4, 5]
print(a)  # 输出: 1
print(b)  # 输出: [2, 3, 4, 5]

c, *d, e = [1, 2, 3, 4, 5]
print(c)  # 输出: 1
print(d)  # 输出: [2, 3, 4]
print(e)  # 输出: 5
解包在处理多个变量时非常方便,特别是在处理函数参数、元组和列表等可迭代对象时。
 

例、使用元组作为函数的返回值可以一次返回多个值

元组可以作为函数的返回值,并且可以一次返回多个值。在Python中,函数可以返回一个元组,调用方可以通过解包来获取这些值——将返回的元组元素值解包到多个变量中。

下面是一个简单的示例:

def calculate(a, b):sum_value = a + bproduct_value = a * breturn sum_value, product_value  # 返回一个元组# 调用函数并解包返回值
result_sum, result_product = calculate(5, 3)print("Sum:", result_sum)          # 输出: Sum: 8
print("Product:", result_product)   # 输出: Product: 15

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu下部署Hadoop集群+Hive(三)

Hive部署 准备环境 apache-hive-4.0.0-bin.tar.gz、mysql-connector-j-8.1.0.jar 如果是离线安装的话&#xff0c;使用mysql-8.0.34-1.el7.x86_64.rpm-bundle.tar&#xff0c;在线安装的话则不用&#xff1b; hive下载地址&#xff1a;Index of /hive (apache.org) mysql …

机械学习—零基础学习日志(如何理解概率论9)

大数定律与中心定律 来看一道习题&#xff1a; 这个题目看看&#xff0c;应该是什么呢~下一章来看看解析~ 《概率论与数理统计期末不挂科|考研零基础入门4小时完整版&#xff08;王志超&#xff09;》学习笔记 王志超老师 &#xff08;UP主&#xff09;

vue3 + ElImage + nodejs 集成了看板娘(UI原生开发达99%)的响应式BLOG(个人博客)。

一、想要我的屎山代码&#xff0c;可以私聊我哟 访问地址&#xff0c;欢迎访问&#xff08;访问效果更佳&#xff09; ☂ 被你发现了&#xff01;&#xff5c; snows_ls BLOGhttp://124.223.41.220/ 欢迎互挂友链 二、做了个啥 1、看板娘&#xff08;看效果好吧&#xff09;…

【数据结构】线性表的顺序表示(顺序表的定义和基本操作)

计算机考研408-数据结构笔记本之——第二章 线性表 2.2 线性表的顺序表示&#xff08;顺序表的定义和基本操作&#xff1a;初始化/插入/删除/查找&#xff09; 2.2.1 顺序表的定义 1.定义 顺序表是线性表的顺序存储。 所谓顺序存储&#xff0c;就是把逻辑上相邻的元素存储在物…

C++ 设计模式——享元模式

C 设计模式——享元模式 C 设计模式——享元模式1. 主要组成成分2. 享元模式内部状态3. 享元模式外部状态4. 逐步构建享元模式4.1 抽象享元类定义4.2 具体享元类实现4.3 享元工厂类实现4.4 主函数 5. 享元模式 UML 图享元模式 UML 图解析 6. 享元模式的优点7. 享元模式的缺点8.…

Linux驱动学习之中断与等待队列

本篇分为设备树部分和API接口部分 设备树 想要使用中断&#xff0c;设备树中需要有两个属性&#xff1a; interrupts // 表示要使用哪一个中断, 中断的触发类型等等。 interrupt-parent // 这个中断要接到哪一个设备去? 即父中断控制器是谁 父中…

趣味算法------拯救阿拉德大陆

目录 ​编辑 题目描述&#xff1a; 思路解析&#xff1a; 具体代码&#xff1a; 总结&#xff1a; 题目描述&#xff1a; 此时一批勇士也随之而来&#xff0c;但其能力也是参差不齐&#xff0c;我们需要挑选出最优秀的勇士来守护这片大陆。每位勇士都有属于自己的编号&am…

JobSchedulerService.setRequiresCharging需充电且电量大于90%才触发的现象

一、摘要 从源码看原生JobSchedulerService.setRequiresCharging 的特性&#xff0c;该特性竞品机器华为、Oppo也是如此。 1、应用处于前台可见&#xff0c;满足充电条件&#xff0c;立刻触发 2、应用处于后台不可见&#xff0c;需要设备连接USB或AC且电量大于90%&#xff0…

挂个人-CSDN Java优秀内容博主rundreamsFly抄袭

事件起因 今天点开自己的CSDN博客&#xff0c;发现给我推了一篇文章抄袭我自己昨天18点发的文章。 就是这篇&#xff0c;一字不差&#xff0c;博主昵称是&#xff1a;rundreamsFly&#xff0c;账号是rundreams。 抄袭者文章 发布于2024-8-26 19:37:41秒&#xff0c;比我发布…

C的温故而知新:位操作(C Primer Plus第十五章)

第十五章&#xff1a;位操作 这一章的篇幅不是很长&#xff0c;但既然能单独作为一章来讲的话&#xff0c;应该蛮重要的&#xff0c;但是我貌似没有总结出多少需要注意、加强记忆的东西&#xff0c;可见在JAVA的日常开发过程中基本不太遇见有关位操作的内容&#xff0c;所以我…

FSQ26信号分析仪RS FSU26 20HZ-26.5G频谱分析仪

罗德与施瓦茨Rohde & Schwarz FSQ26信号分析仪&#xff0c;20 Hz - 26.5 GHz ​R&S FSQ26 信号分析仪集两种仪器于一身。它提供高达 120 MHz 解调带宽的信号分析&#xff0c;并具有高端频谱分析仪的动态范围。 频率范围&#xff1a;20 Hz 至 26.5 GHz 高端频谱分析仪…

神经网络—卷积层

1.讲解 Conv2d out_channels 参数为2时&#xff0c;会生成两个卷积核&#xff0c;分别与输入进行卷积。得到的两个输出为输出 新生成的卷积核和原来的卷积核不一定相同 in_channels (int) – Number of channels in the input image out_channels (int) – Number of channels…

ARM32开发——(六)GPIO_USART通信原理

1. 串行通信和并行通信 1.1 串行通信 串行通信是一种数据传输的方式&#xff0c;它是指将数据按照一位一位的顺序依次发送和接收&#xff0c;常用于远距离通信、嵌入式系统和低带宽传输场景下。串行通信相对于并行通信而言&#xff0c;只需要传输一条数据线&#xff0c;相对简…

一文了解机器学习顶会ICML 2024的研究热点

对人工智能研究领域前沿方向的跟踪是提高科研能力和制定科研战略的关键。本文通过图文并茂的方式介绍了ICML 2024的研究热点&#xff0c;帮助读者了解和跟踪机器学习和人工智能的前沿研究方向。本推文的作者是许东舟&#xff0c;审校为邱雪和黄星宇。 1 会议介绍 ICML&#x…

运放阻抗和噪声(同相放大器的输入/输出阻抗 + 电压跟随器阻抗 + 噪声 +信噪比)

2024-8-27&#xff0c;星期一&#xff0c;21:03&#xff0c;天气&#xff1a;阴雨&#xff0c;心情&#xff1a;晴。培训终于结束啦&#xff0c;开始轮岗了&#xff0c;看了两天PPT&#xff0c;加油加油&#xff0c;继续学习。 今天继续学习第六章运算放大器&#xff0c;主要学…

一文带你从零到实战,学会gcc和Makefile,多文件编译神器的使用与编写

目录&#xff1a; 目录&#xff1a; 一、什么是Makefile 1.1 makefile的作用&#xff1a; 1.2 makefile的基本组成&#xff1a; 二、Linux编译过程&#xff1a; 2.1 linux编译过程: 2.1.1 预处理&#xff08;Preprocessing&#xff09; 2.1.2 编译&#xff08;Compilation&am…

Android Studio 自定义字体大小

常用编程软件自定义字体大全首页 文章目录 前言具体操作1. 打开设置对话框2. 选择外观字体 前言 Android Studio 自定义字体大小&#xff0c;统一设置为 JetBrains Mono &#xff0c;大小为 14 具体操作 【File】>【Settings...】>【Appearance & Behavior】>【…

二、设置地图配置表

一、导入一个背景图 由于背景图比较大&#xff0c;需要缩小至0.73 二、写配置文件&#xff08;SO&#xff09; 使用List需要一个命名空间 写一个类&#xff0c;声明房间的出现数量和种类&#xff1b;将它实例化出来 三、枚举变量的多选 在枚举变量中标记命名空间&#xff…

docker 多线成服务,比如gunicorn服务启动报错解决办法

docker执行的时候报错&#xff0c;排查是线程创建权限不足导致的&#xff0c;报错如下。 解决办法 docker run -e OPENBLAS_NUM_THREADS1 your_image

Unity XR Interaction Toolkit 踩坑记录

1&#xff1a;按下 grap/select 键 物品直接飞到手上 2 按下 grap/select 键 物品一点点的想自己移动