做网站所需要的代码,设计iphone手机网站,文化馆为何需要建设自己的网站,书店网站建设个人总结文章目录 数值列表列表的基本概念#xff1a;列表的常用方法和操作#xff1a;列表的迭代和遍历#xff1a;列表的内部实现原理#xff1a; 字典字典的基本概念#xff1a;字典的常用方法和操作#xff1a;词典的迭代和遍历#xff1a;词典的内部实现原理#xff1a; 集… 文章目录 数值列表列表的基本概念列表的常用方法和操作列表的迭代和遍历列表的内部实现原理 字典字典的基本概念字典的常用方法和操作词典的迭代和遍历词典的内部实现原理 集合集合set的基本概念集合的常用方法和操作集合的数学运算集合的迭代和遍历 元组元组tuple的基本概念元组的常用方法和操作主要的遍历方法 字符串字符串的基本概念字符串的常用方法和操作字符串的格式化字符串的驻留机制 综合示例 数值 整数int 表示整数可以是正数、负数或零通过不同的前缀还可以区分为二进制八进制十进制默认十六机制。x 5默认十进制x 0b0101 二进制x 0o005 八进制x 0x005 十六进制 浮点数float 表示有小数点的数字。y 3.14有时候浮点数表达式的计算可能不准确 布尔值bool 表示逻辑值只有两个取值True和False一般情况下非空和非零的值等价True为空为零的值等价False。is_true True布尔值为FalseFalse、整数0、浮点数0.0、None、空字符串、空列表、空元组、空字典、空集合 空值NoneType 表示一个特殊的空值通常用于表示变量未赋值或函数没有返回值。x None
列表 列表的基本概念 使用方括号 [] 来表示列表列表中的元素用逗号 , 分隔。 列表是一种可以包含不同类型元素的数据结构这意味着列表中可以有整数、浮点数、字符串、甚至是其他列表或者不同的类型数据结构等等。 my_list [10, 3.14, Hello, True, [1, 2, 3], {name: Alice, age: 30}]print(my_list[0]) # 访问第一个元素整数类型
print(my_list[1]) # 访问第二个元素浮点数类型
print(my_list[2]) # 访问第三个元素字符串类型
print(my_list[3]) # 访问第四个元素布尔类型
print(my_list[4]) # 访问第五个元素另一个列表类型
print(my_list[5]) # 访问第六个元素字典类型列表是一种有序的数据结果每一个元素都映射一个索引列表中的元素可以通过索引来访问可以使用正向索引从左往右数从 0 开始和负向索引从右往左数从 -1 开始来访问列表中的元素。 # 定义一个包含一些元素的列表
my_list [apple, banana, orange, grape, melon]# 使用索引访问列表中的元素
first_fruit my_list[0] # 第一个元素apple
second_fruit my_list[1] # 第二个元素banana
last_fruit my_list[-1] # 最后一个元素melon列表是一种可变的数据结构即可以通过索引来修改、添加或删除其中的元素列表的长度和元素的值都可以发生变化。
列表的常用方法和操作
列表具有丰富的方法和操作例如append()、insert()、remove()、pop()、extend()、sort()、reverse() 等等。这些方法可以用来在列表中添加、删除、修改元素或者对列表进行排序、翻转等操作。 append() append() 方法用于在列表末尾添加一个元素可以添加整个列表、词典等。 语法list.append(element) 参数element - 要添加到列表末尾的元素。 示例 my_list [1, 2, 3]
my_list.append(4)
print(my_list) # 输出[1, 2, 3, 4]my_list.append([1, 2, 3])
print(my_list) # 输出[1, 2, 3, 4, 1, 2, 3]extend() extend() 方法用于将另一个列表中的所有元素添加到当前列表的末尾。使用 也可完成此操作 语法list.extend(iterable) 参数iterable - 可迭代对象如列表、元组、集合等。 示例 my_list [1, 2, 3]
another_list [4, 5, 6]
my_list.extend(another_list)
print(my_list) # 输出[1, 2, 3, 4, 5, 6]insert() insert() 方法用于在指定索引位置插入一个元素可以添加整个列表、词典等。 语法list.insert(index, element) 参数index - 要插入元素的索引位置element - 要插入的元素。 示例 my_list [1, 2, 3]
my_list.insert(1, 1.5)
print(my_list) # 输出[1, 1.5, 2, 3]my_list.insert(1, [1, 2])
print(my_list) # 输出[1, [1, 2], 1.5, 2, 3]remove() remove() 方法用于删除列表中指定的元素第一个匹配的元素。 语法list.remove(element) 参数element - 要删除的元素。 示例 my_list [1, 2, 3, 2, 4]
my_list.remove(2)
print(my_list) # 输出[1, 3, 2, 4]pop() pop() 方法用于删除并返回列表中指定位置的元素。 语法list.pop([index]) 参数index可选 - 要删除的元素的索引默认为最后一个元素。 返回值返回被删除的元素。 示例 my_list [1, 2, 3]
popped_element my_list.pop(1)
print(popped_element) # 输出2
print(my_list) # 输出[1, 3]# 使用这个也可以实现
del my_list[0]
print(my_list) # 输出[3]sort() sort() 方法用于对列表进行排序。 语法list.sort(keyNone, reverseFalse) 参数 key可选 - 指定一个函数用于从每个列表元素中提取比较键默认为 None直接比较元素本身reverse可选 - 如果为 True则按降序排序。 示例 my_list [3, 1, 2]
my_list.sort()
print(my_list) # 输出[1, 2, 3]reverse() reverse() 方法用于反转列表中的元素顺序。 语法list.reverse() 示例 my_list [1, 2, 3]
my_list.reverse()
print(my_list) # 输出[3, 2, 1]列表的迭代和遍历 可以使用 for 循环来遍历列表中的元素也可以使用列表推导式等方式进行迭代操作。 通过循环遍历列表可以对列表中的每个元素进行处理或者对列表进行相应的操作。 # 创建一个包含元素的列表
my_list [1, 2, 3, 4, 5]# 使用 for 循环遍历列表中的元素并打印
for element in my_list:print(element)列表的内部实现原理
在 Python 中列表通常是通过动态数组来实现的即在内存中分配一块连续的空间来存储列表中的元素。当列表中的元素数量超过当前分配空间时Python 会自动分配更大的空间并将元素复制到新的空间中以保证列表的可变性和性能。 不对二维和多维列表做讲述 字典 字典的基本概念 字典是一种键值对key-value的数据结构每个元素都由一个键和一个对应的值组成。键必须是唯一的但值可以重复。 字典是无序的即没有按照元素添加的顺序来存储和访问元素。 字典是可变的可以通过键来引用、添加、修改或删除其中的元素。 # 定义一个字典包含个人信息
person_info {name: Alice,age: 30,address: 123 Main St
}# 将元素赋值给另一个变量
new_var person_info[address]# 添加新的元素
person_info[email] aliceexample.com# 修改元素
person_info[age] 31# 删除元素
del person_info[address]使用大括号 {} 来表示字典键值对之间用冒号: 分隔冒号: 左侧是键右侧是值每键值对之间用逗号 , 分隔。
字典的常用方法和操作
字典具有丰富的方法和操作例如keys()、values()、items()、get()、pop()、update() 等等。这些方法可以用来获取字典中的键、值、键值对或者对字典进行添加、删除、更新等操作。 keys() keys() 方法用于获取字典中所有的键。 语法dict.keys() 返回值返回一个包含字典所有键的可迭代对象。 示例 my_dict {a: 1, b: 2, c: 3}
print(my_dict.keys()) # 输出dict_keys([a, b, c])values() values() 方法用于获取字典中所有的值。 语法dict.values() 返回值返回一个包含字典所有值的可迭代对象。 示例 my_dict {a: 1, b: 2, c: 3}
print(my_dict.values()) # 输出dict_values([1, 2, 3])items() items() 方法用于获取字典中所有的键值对。 语法dict.items() 返回值返回一个包含字典所有键值对的可迭代对象每个元素是一个元组包含键和对应的值。 示例 my_dict {a: 1, b: 2, c: 3}
print(my_dict.items()) # 输出dict_items([(a, 1), (b, 2), (c, 3)])get() get() 方法用于根据键获取字典中对应的值如果键不存在则返回指定的默认值默认为 None。 语法dict.get(key, defaultNone) 参数key - 要获取值的键default可选 - 键不存在时返回的默认值。 返回值返回键对应的值如果键不存在则返回默认值。 示例 my_dict {a: 1, b: 2, c: 3}
value my_dict.get(b)
print(value) # 输出2pop() pop() 方法用于删除并返回字典中指定键的值。 语法dict.pop(key, defaultNone) 参数key - 要删除的键default可选 - 键不存在时返回的默认值。 返回值返回被删除的键对应的值如果键不存在则返回默认值或抛出 KeyError 异常。 示例 my_dict {a: 1, b: 2, c: 3}
value my_dict.pop(b)
print(value) # 输出2
print(my_dict) # 输出{a: 1, c: 3}update() update() 方法用于更新字典中的键值对可以接受一个字典或者包含键值对的可迭代对象作为参数。 语法dict.update([other]) 参数other - 字典或包含键值对的可迭代对象。 示例 my_dict {a: 1, b: 2}
other_dict {b: 3, c: 4}
my_dict.update(other_dict)
print(my_dict) # 输出{a: 1, b: 3, c: 4}词典的迭代和遍历 可以使用 for 循环来遍历字典中的键、值或键值对也可以使用字典推导式等方式进行迭代操作。 通过循环遍历字典可以对字典中的每个键值对进行处理或者对字典进行相应的操作。 for item in Zidian: # 使用for in循环获取的也是键print(item,Zidian.get(item)) # 前面是键后面是值for key,value in user.items():print(Key: key)print(Value: value)词典的内部实现原理
在 Python 中字典通常是通过哈希表来实现的即通过哈希函数将键映射到对应的存储位置以实现快速的查找和插入操作。当发生哈希冲突时Python 使用链表或其他方法来处理冲突保证字典的性能和可靠性。
集合 集合set的基本概念
使用大括号 {} 或 set() 函数来表示集合元素之间用逗号 , 分隔不存在像词典那样的键值对。集合是一种无序的数据结构这意味着集合不可以利用索引来操作数据。集合是一种不重复的数据结构存储的数据不能是相同的。集合中的元素可以是任意不可变类型的数据如整数、浮点数、字符串、元组等但不能包含可变类型的数据如列表、字典、集合等。若存在则抛出TypeError异常。集合是可变的可以通过添加或删除元素来修改集合。
集合的常用方法和操作
集合具有丰富的方法和操作例如add()、remove()、discard()、pop()、clear()、union()、intersection()、difference() 等等。这些方法可以用来添加、删除、查找、合并、比较等操作集合中的元素。 add() add() 方法用于向集合中添加一个元素。 语法set.add(element) 参数element - 要添加的元素。 示例 my_set {1, 2, 3}
my_set.add(4)
print(my_set) # 输出{1, 2, 3, 4}remove() remove() 方法用于删除集合中指定的元素如果元素不存在则抛出 KeyError 异常。 语法set.remove(element) 参数element - 要删除的元素。 示例 my_set {1, 2, 3}
my_set.remove(2)
print(my_set) # 输出{1, 3}discard() discard() 方法用于删除集合中指定的元素如果元素不存在则不进行任何操作。 语法set.discard(element) 参数element - 要删除的元素。 示例 my_set {1, 2, 3}
my_set.discard(2)
print(my_set) # 输出{1, 3}pop() pop() 方法用于移除并返回集合中的一个随机元素。 语法set.pop() 返回值返回被移除的元素。 示例 my_set {1, 2, 3}
popped_element my_set.pop()
print(popped_element) # 输出随机一个元素
print(my_set) # 输出移除随机元素后的集合clear() clear() 方法用于移除集合中的所有元素使集合变为空集。 语法set.clear() 示例 my_set {1, 2, 3}
my_set.clear()
print(my_set) # 输出set()集合的数学运算
集合支持并集、交集、差集等数学运算可以使用相应的方法或运算符来实现。这些运算可以用来对集合进行合并、查找共同元素、找出不同元素等操作。 union() union() 方法用于返回两个集合的并集即包含两个集合中所有不重复的元素。 语法set.union(*others) 参数others - 其他要并集的集合。 示例 set1 {1, 2, 3}
set2 {3, 4, 5}
union_set set1.union(set2)
print(union_set) # 输出{1, 2, 3, 4, 5}intersection() intersection() 方法用于返回两个集合的交集即包含两个集合中共同的元素。 语法set.intersection(*others) 参数others - 其他要交集的集合。 示例 set1 {1, 2, 3}
set2 {3, 4, 5}
intersection_set set1.intersection(set2)
print(intersection_set) # 输出{3}difference() difference() 方法用于返回两个集合的差集即包含在第一个集合中但不在第二个集合中的元素。 语法set.difference(*others) 参数others - 其他要比较的集合。 示例 set1 {1, 2, 3}
set2 {3, 4, 5}
difference_set set1.difference(set2)
print(difference_set) # 输出{1, 2}集合的迭代和遍历 通过 for 循环可以依次迭代集合中的每个元素并对每个元素进行相应的操作。 通过集合推导式可以对集合中的每个元素进行操作并生成一个新的集合。 my_set {1, 2, 3, 4, 5}# 使用 for 循环遍历集合中的元素并打印
for element in my_set:print(element)元组 元组tuple的基本概念 使用小括号**()来表示元组元素之间用逗号,** 分隔。 元组是一种有序的数据结构可以使用索引访问元组但元组是不可变的即一旦创建就不能修改其内容因此可以作为字典的键、集合的元素等。 # 创建一个元组
my_tuple (10, 20, 30, 40, 50)# 使用索引访问元组中的元素并打印
print(First element:, my_tuple[0]) # 访问第一个元素
print(Second element:, my_tuple[1]) # 访问第二个元素
print(Last element:, my_tuple[-1]) # 使用负向索引访问最后一个元素元组可以包含任意类型的元素包括整数、浮点数、字符串、元组等。
元组的常用方法和操作
元组相对于列表的方法和操作较少但仍包括一些常用的方法例如index()、count() 等。这些方法可以用来查找元组中的元素索引、统计元素出现次数等。 index() index() 方法用于查找指定元素在元组中的索引。 语法tuple.index(element[, start[, end]]) 参数element - 要查找的元素start可选 - 查找起始位置的索引end可选 - 查找结束位置的索引。 可选参数 start 和 end 用于指定搜索范围的起始和结束位置包含起始位置但不包含结束位置如果未指定则默认搜索整个元组。 返回值返回指定元素在元组中第一次出现的索引如果未找到则抛出 ValueError 异常。 示例 my_tuple (1, 2, 3, 2)
index my_tuple.index(2)
print(index) # 输出1index my_tuple.index(2, 2, 4)
print(index) # 输出3count() count() 方法用于统计元组中指定元素的出现次数。 语法tuple.count(element) 参数element - 要统计出现次数的元素。 返回值返回指定元素在元组中出现的次数。 示例 my_tuple (1, 2, 3, 2)
count my_tuple.count(2)
print(count) # 输出2主要的遍历方法 通过 for 循环可以依次迭代元组中的每个元素并对每个元素进行相应的操作。 通过 enumerate() 函数可以同时获取元组中每个元素的索引和值然后进行相应的操作 my_tuple (1, 2, 3, 4, 5)# 使用 for 循环遍历元组中的元素并打印
for element in my_tuple:print(element)my_tuple (1, 2, 3, 4, 5)# 使用 enumerate() 函数遍历元组中的元素及其索引并打印
for index, element in enumerate(my_tuple):print(Index:, index, Element:, element)字符串 字符串的基本概念
字符串是一种有序的字符序列用于表示文本数据。字符串是不可变的即一旦创建就不能修改其内容但可以通过一些操作来生成新的字符串。使用单引号 、双引号 或三引号 、 来表示字符串其中三引号用于表示多行字符串。
字符串的常用方法和操作
字符串具有丰富的方法和操作例如split()、join()、strip()、replace()、find()、startswith() 、endswith()等等。这些方法可以用来对字符串进行分割、连接、去除空白字符、替换、查找等操作。 split() split() 方法用于将字符串分割成子串并返回一个包含分割结果的列表。 语法str.split(sepNone, maxsplit-1) 参数 sep可选 - 分隔符默认为任意空白字符maxsplit可选 - 最大分割次数。 返回值返回一个包含分割后子串的列表。 示例 my_string apple,banana,orange
splitted my_string.split(,)
print(splitted) # 输出[apple, banana, orange]join() join() 方法用于将列表中的字符串元素连接成一个字符串。 语法separator.join(iterable) 参数separator - 连接的分隔符iterable - 包含字符串的可迭代对象。 返回值返回连接后的字符串。 示例 fruits [apple, banana, orange]
joined ,.join(fruits)
print(joined) # 输出apple,banana,orangestrip() strip() 方法用于去除字符串两端的空白字符空格、制表符、换行符等。 语法str.strip(charsNone) 参数chars可选 - 要去除的指定字符。 返回值返回去除空白字符后的字符串。 示例 my_string hello
stripped my_string.strip()
print(stripped) # 输出helloreplace() replace() 方法用于替换字符串中的指定子串。 语法str.replace(old, new[, count]) 参数old - 要被替换的子串new - 替换后的新子串count可选 - 替换次数。 返回值返回替换后的新字符串。 示例 my_string apple pie
replaced my_string.replace(apple, banana)
print(replaced) # 输出banana piefind() find() 方法用于在字符串中查找指定子串并返回第一次出现的索引如果未找到则返回 -1。 语法str.find(sub[, start[, end]]) 参数sub - 要查找的子串start可选 - 查找起始位置的索引end可选 - 查找结束位置的索引。 返回值返回第一次出现的子串的索引如果未找到则返回 -1。 示例 my_string hello world
index my_string.find(world)
print(index) # 输出6startswith() startswith() 方法用于判断字符串是否以指定的前缀开头。 语法str.startswith(prefix[, start[, end]]) 参数 prefix - 要检查的前缀start可选 - 检查起始位置的索引end可选 - 检查结束位置的索引。 返回值如果字符串以指定前缀开头则返回 True否则返回 False。 示例 my_string hello world
starts_with_hello my_string.startswith(hello)
print(starts_with_hello) # 输出True字符串的格式化
字符串的格式化是指在字符串中插入变量、表达式或者其他字符串并按照一定的格式进行排列和显示。在 Python 中有多种方式可以进行字符串的格式化包括使用字符串的 format() 方法、使用 f-strings格式化字符串字面值以及旧式的 % 运算符。在下面示例中{} 或者 % 被用作占位符后面的变量会按照顺序依次替换这些占位符。而在 f-strings 中使用 {} 包含变量名或表达式即可Python 会在运行时将这些表达式的值插入到字符串中。 使用 format() 方法 name Alice
age 30
formatted_string My name is {} and I am {} years old..format(name, age)
print(formatted_string)My name is Alice and I am 30 years old. 还可以在{}进行如下操作 指定变量名 在大括号中可以使用变量名对应 .format() 方法中的关键字参数名。 pythonCopy code
formatted_string My name is {name} and I am {age} years old..format(nameAlice, age30)
print(formatted_string)My name is Alice and I am 30 years old. 索引位置 在大括号中也可以使用参数的索引位置。 pythonCopy code
formatted_string My name is {0} and I am {1} years old..format(Alice, 30)
print(formatted_string)My name is Alice and I am 30 years old. 格式指令 更多格式指令 、、分别表示左对齐、右对齐和居中对齐默认是左对齐。 {:9s}.format(hello) # 左对齐
{:9s}.format(hello) # 右对齐
{:^9s}.format(hello) # 居中对齐宽度使用数字指定字段的最小宽度。 {:10s}.format(hello) # 总宽度为10个字符精度在小数部分指定数字的精度。 {:.2f}.format(3.14159) # 保留两位小数符号控制数字的正负号显示。 {:}.format(10) # 显示正负号
{:-}.format(-10) # 仅显示负号填充指定填充字符。 {:_10s}.format(hello) # 使用下划线填充
{:^10s}.format(hello) # 使用空格填充默认类型指定格式化的类型。 {:b}.format(10) # 二进制表示
{:x}.format(255) # 十六进制表示使用 f-strings格式化字符串字面值 name Alice
age 30
formatted_string fMy name is {name} and I am {age} years old.
print(formatted_string)My name is Alice and I am 30 years old. rstringraw原始字符串用于防止转义字符的特殊处理。 ustringUnicode 字符串在 Python 2 中用于指示字符串为 Unicode 类型但在 Python 3 中默认所有字符串都是 Unicode 类型因此此前缀不再需要。 fstring: 格式化字符串字面值可以在字符串中直接引用变量和表达式并将它们的值插入到字符串中。 使用旧式的 % 运算符 name Alice
age 30
formatted_string My name is %s and I am %d years old. % (name, age)
print(formatted_string)My name is Alice and I am 30 years old.
字符串的驻留机制
字符串的驻留机制是指在 Python 中对相同的字符串字面值进行内存优化使得它们共享相同的内存地址以减少内存使用和提高性能。在 Python 中字符串的驻留机制遵循以下原则 对于长度不超过20个字符的字符串Python 在程序编译时会自动将其驻留intern即使是不同的字符串对象只要它们的值相同都会指向相同的内存地址。 s1 hello
s2 hello
print(id(s1), id(s2)) # 两个字符串对象的内存地址相同对于长度超过20个字符的字符串Python 不会自动驻留即使它们的值相同也不会共享内存地址。 好像还是一样的不确定的事情等以后再考验 s1 a * 21
s2 a * 21
print(id(s1), id(s2)) # 两个字符串对象的内存地址不同使用 intern() 函数可以强制将一个字符串驻留使得它与其他相同值的字符串共享内存地址。 s1 hello
s2 intern(hello)
print(id(s1), id(s2)) # 两个字符串对象的内存地址相同import syss1 hello
s2 sys.intern(hello)
print(id(s1), id(s2)) # 两个字符串对象的内存地址相同虽然字符串驻留机制可以节省内存但也可能导致意外的内存泄漏问题因为驻留的字符串不会被垃圾回收。因此不要在运行时动态地创建大量长度不超过20个字符的字符串以避免潜在的内存泄漏问题。
综合示例
# 定义学生的数据结构
# 使用字典来存储学生信息其中键是学生ID字符串值是另一个字典包含姓名、年龄、成绩列表和联系方式元组students {S001: {name: Alice,age: 20,grades: [88, 92, 85],contact: (aliceemail.com, 123-456-7890)},S002: {name: Bob,age: 22,grades: [76, 85, 90],contact: (bobemail.com, 098-765-4321)},S003: {name: Carol,age: 21,grades: [92, 88, 91],contact: (carolemail.com, 345-678-9012)}
}# 显示所有学生信息的函数
def display_students():print(Displaying all students information:)for student_id, info in students.items():print(fStudent ID: {student_id})print(fName: {info[name]})print(fAge: {info[age]})print(fGrades: {info[grades]})print(fContact Email: {info[contact][0]}, Phone: {info[contact][1]})print(- * 40)# 添加新学生的函数
def add_student(student_id, name, age, grades, email, phone):if student_id in students:print(Error: Student ID already exists.)returnstudents[student_id] {name: name,age: age,grades: grades,contact: (email, phone)}print(fStudent {name} added successfully.)# 删除学生的函数
def delete_student(student_id):if student_id in students:del students[student_id]print(fStudent {student_id} has been deleted.)else:print(Error: Student ID not found.)# 搜索学生信息的函数
def search_student(student_id):if student_id in students:info students[student_id]print(fFound student: {student_id})print(fName: {info[name]})print(fAge: {info[age]})print(fGrades: {info[grades]})print(fContact Email: {info[contact][0]}, Phone: {info[contact][1]})else:print(Student not found.)# 计算学生平均成绩的函数
def calculate_average(student_id):if student_id in students:grades students[student_id][grades]average sum(grades) / len(grades)print(fAverage grades for {students[student_id][name]}: {average:.2f})else:print(Error: Student ID not found to calculate average.)# 主函数用于运行脚本
def main():# 测试添加和删除功能add_student(S004, David, 23, [85, 80, 88], davidemail.com, 456-789-0123)display_students()delete_student(S002)display_students()# 测试搜索和计算平均成绩功能search_student(S001)calculate_average(S001)add_student(S005, Eve, 19, [92, 87, 90], eveemail.com, 987-654-3210)delete_student(S003)search_student(S004)calculate_average(S004)display_students()if __name__ __main__:main() 本篇文章如有错误欢迎指正感激不尽。