
欢迎来到Cefler的博客😁
🕌博客主页:折纸花满衣
🏠个人专栏:Python

目录
- 👉🏻字典(Dictionary)
- 👉🏻列表(list)
- 👉🏻eval函数
- 👉🏻输出格式
- 👉🏻字符串内置方法
- 2. 示例
- 字符串逆序
👉🏻字典(Dictionary)
Python 中的字典(Dictionary)是一种内置的数据结构,它存储了键值对(key-value pairs)的集合。每个键(key)都是唯一的,并且与某个值(value)相关联。字典对于存储需要快速查找的数据非常有用,比如存储用户信息、配置选项等。
基本概念
- 键(Key):键必须是唯一的,且必须是=不可变类型,如字符串(str)、数字(int、float、complex 等)或元组(tuple)。列表(list)和字典(dict)等可变类型不能作为键。
- 值(Value):值可以是任何数据类型,包括列表、字典等可变类型。
- 创建字典:使用花括号
{}或dict()函数来创建字典。
# 使用花括号创建字典
my_dict = {'name': 'John', 'age': 30, 'city': 'New York'}
# 使用 dict() 函数创建字典
my_dict_2 = dict(name='John', age=30, city='New York')
# 或者使用关键字参数的形式
my_dict_3 = dict([('name', 'John'), ('age', 30), ('city', 'New York')])
常见方法
- 访问元素:使用键来访问字典中的值。
print(my_dict['name']) # 输出: John
- 添加元素:如果键不存在,则添加新键值对;如果键已存在,则更新该键对应的值。
my_dict['email'] = 'john@example.com' # 添加新键值对
my_dict['age'] = 31 # 更新现有键的值
- 删除元素:使用
del语句或pop()方法来删除字典中的元素。
del my_dict['email'] # 删除键为 'email' 的元素
print(my_dict.pop('age', 'Key not found')) # 删除键为 'age' 的元素,并返回其值;如果键不存在,则返回 'Key not found'
-
遍历字典:
- 遍历键(keys):
for key in my_dict.keys(): print(key)- 遍历值(values):
for value in my_dict.values(): print(value)- 遍历键值对(items):
for key, value in my_dict.items(): print(key, value) -
get()方法:使用键来获取值,如果键不存在,可以返回指定的默认值,而不是抛出 KeyError。
print(my_dict.get('email', 'Not found')) # 输出: Not found
update()方法:使用另一个字典中的键值对来更新当前字典。
new_info = {'email': 'john@newdomain.com', 'job': 'Engineer'}
my_dict.update(new_info)
print(my_dict)
len()函数:获取字典中键值对的数量。
print(len(my_dict))
- 字典推导式:一种简洁的方式来创建或修改字典。
# 创建一个新字典,其键和值都是原字典值的平方
squared_dict = {key: value**2 for key, value in my_dict.items() if isinstance(value, int)}
👉🏻列表(list)
Python中的list(列表)是一种基本的数据结构,用于存储一系列的元素。这些元素可以是不同类型的数据,比如整数、浮点数、字符串、甚至是另一个列表(即列表的嵌套)。列表是可变的,意味着你可以在创建列表之后添加、删除或修改其中的元素。
基本概念
- 索引:列表中的每个元素都有一个索引(或位置),索引从0开始。
- 切片:通过指定起始索引和结束索引(可选),可以获取列表中的一部分元素。
- 嵌套:列表可以包含其他列表作为元素,这允许创建多维数据结构。
创建列表
- 使用方括号
[]和逗号,来创建列表。
my_list = [1, 2.5, 'hello', [10, 20]]
常见方法
append(x):在列表末尾添加一个元素。
my_list.append(3)
extend(iterable):将另一个可迭代对象(如列表)的所有元素添加到列表的末尾。
my_list.extend([4, 5])
insert(i, x):在指定位置i插入元素x。
my_list.insert(1, 1.5)
remove(x):移除列表中第一个出现的元素x。如果元素不存在,将抛出ValueError。
my_list.remove(2.5)
pop([i]):移除并返回列表中的指定位置i的元素。如果不指定i,则默认移除并返回最后一个元素。
last_element = my_list.pop()
second_element = my_list.pop(1)
index(x):返回列表中元素x的第一个出现的索引。如果元素不存在,将抛出ValueError。
index = my_list.index('hello')
count(x):返回列表中元素x出现的次数。
count = my_list.count(1)
sort(*, key=None, reverse=False):对列表进行就地排序。可选参数key用于指定一个函数,该函数会在每个元素上调用以提取用于比较的键;reverse为True时表示降序排序。
my_list.sort(reverse=True)
reverse():将列表中的元素反向排列。
my_list.reverse()
copy():返回列表的一个浅拷贝。
new_list = my_list.copy()
- 列表推导式:一种简洁的构建列表的方式,通过表达式和循环来生成列表。
squares = [x**2 for x in range(10)]
注意事项
- 列表是可变的,意味着你可以修改其元素。
- 列表的索引越界(即访问不存在的索引)将抛出
IndexError。 - 列表的切片操作返回一个新的列表,而不是修改原列表。
- 列表的
sort()和reverse()方法会就地修改列表,即直接修改原列表而不是返回新列表。
👉🏻eval函数
eval 函数是 Python 中的一个内置函数,它允许一个字符串表达式被解析为 Python 表达式,并计算其值。简单来说,eval 可以执行一个字符串表达式,并返回表达式的值。这个函数在处理动态表达式、从字符串中读取和执行代码等场景中非常有用,但也因为安全性问题(比如执行恶意代码)而需要谨慎使用。
基本用法
result = eval(expression, globals=None, locals=None)
expression:一个字符串表达式,表示要计算的 Python 表达式。globals(可选):一个字典,指定全局变量。如果未提供,则使用当前的全局符号表。locals(可选):一个字典,指定局部变量。如果未提供,则使用当前局部符号表。
示例
x = 5
expr = "x + 3"
result = eval(expr)
print(result) # 输出: 8
# 使用 globals 和 locals
y = 10
globals_dict = {'x': 2}
locals_dict = {'y': 5}
result = eval('x + y', globals=globals_dict, locals=locals_dict)
print(result) # 输出: 7,因为这里使用了指定的 globals 和 locals
安全性问题
尽管 eval 函数功能强大,但它也带来了安全风险。如果你执行的字符串来自不受信任的源(如用户输入),恶意用户可能会构造表达式来执行不希望执行的代码,如删除文件、访问敏感数据等。
为了避免这种风险,有几种替代方案可以考虑:
- 使用
ast.literal_eval():这个函数用于安全地评估一个字符串表达式,但它只能处理 Python 字面量表达式,不能执行任意代码。 - 自定义解析器:如果可能,编写一个专门解析你需要的特定格式的字符串的解析器,这样可以避免执行任意代码的风险。
- 限制环境:如果你必须使用
eval,尝试通过限制globals和locals字典来限制其能访问的变量和函数。
👉🏻输出格式
在 Python 中,输出格式可以通过多种方式实现,类似于 C 语言的 printf。以下是几种常用的方法来格式化输出整数和小数。
- 使用
print()函数
直接输出
x = 10
y = 3.14159
print("整数:", x)
print("小数:", y)
字符串格式化
a. 使用 % 操作符
类似于 C 语言的 printf,可以使用 % 来格式化输出:
print("整数: %d" % x) # 输出整数
print("小数: %.2f" % y) # 输出小数,保留两位小数
b. 使用 str.format()
print("整数: {}".format(x)) # 输出整数
print("小数: {:.2f}".format(y)) # 输出小数,保留两位小数
c. 使用 f-string(Python 3.6 及以上)
print(f"整数: {x}") # 输出整数
print(f"小数: {y:.2f}") # 输出小数,保留两位小数
{:}:简单输出值。
数字格式
-
整数格式
{:d}:十进制整数。{:b}:二进制整数。{:o}:八进制整数。{:x}:十六进制小写字母。{:X}:十六进制大写字母。
-
浮点数格式
{:f}:浮点数,默认保留6位小数。{:e}:科学计数法(小写)。{:E}:科学计数法(大写)。{:g}:根据值自动选择f或e格式。{:G}:根据值自动选择F或E格式。
精度和宽度
- 宽度:可以在冒号前指定宽度,例如
{:10}表示宽度为 10。 - 精度:在点(
.)后指定精度,例如{:0.2f}表示浮点数保留2位小数。
对齐方式
<:左对齐。>:右对齐(默认)。^:居中对齐。
填充字符
- 可以在宽度前指定填充字符,例如
{:0>5}表示用零填充到宽度5。
组合使用示例
x = 42
y = 3.14159
# 整数格式化
print(f"十进制: {x:d}")
print(f"二进制: {x:b}")
print(f"八进制: {x:o}")
print(f"十六进制(小写): {x:x}")
print(f"十六进制(大写): {x:X}")
# 浮点数格式化
print(f"浮点数: {y:f}")
print(f"科学计数法(小写): {y:e}")
print(f"科学计数法(大写): {y:E}")
print(f"自动选择格式: {y:g}")
# 指定宽度和对齐
print(f"右对齐: {x:>5}") # 右对齐,宽度为 5
print(f"左对齐: {x:<5}") # 左对齐,宽度为 5
print(f"居中对齐: {x:^5}") # 居中对齐,宽度为 5
print(f"零填充: {x:0>5}") # 用 0 填充,宽度为 5
# 浮点数指定精度
print(f"保留两位小数: {y:.2f}")
print(f"保留四位小数: {y:.4f}")
其他格式选项
- 千分位分隔符:使用
,选项,例如{:,.2f}输出带有千分位的浮点数。 - 百分比:使用
%选项,例如{:,.2%}输出为百分比并保留两位小数。
👉🏻字符串内置方法
在 Python 中,字符串有许多内置方法,可以帮助你处理和操作字符串。以下是一些常用的字符串内置方法:
- 字符串方法
-
str.capitalize(): 将字符串的首字母大写,其余小写。s = "hello world" print(s.capitalize()) # Output: Hello world -
str.upper(): 将所有字母转换为大写。print(s.upper()) # Output: HELLO WORLD -
str.lower(): 将所有字母转换为小写。print(s.lower()) # Output: hello world -
str.title(): 将每个单词的首字母大写。print(s.title()) # Output: Hello World -
str.strip([chars]): 去掉字符串两端的空格或指定字符。s = " hello " print(s.strip()) # Output: hello -
str.split([sep]): 将字符串按指定分隔符分割成列表。s = "a,b,c" print(s.split(',')) # Output: ['a', 'b', 'c'] -
str.join(iterable): 将可迭代对象中的字符串用指定字符串连接。lst = ['a', 'b', 'c'] print(','.join(lst)) # Output: a,b,c -
str.replace(old, new[, count]): 替换字符串中的指定子串。s = "hello world" print(s.replace("world", "Python")) # Output: hello Python -
str.find(sub[, start[, end]]): 返回子串在字符串中首次出现的索引,未找到返回 -1。print(s.find("world")) # Output: 6 -
str.startswith(prefix[, start[, end]]): 检查字符串是否以指定前缀开头。print(s.startswith("hello")) # Output: True -
str.endswith(suffix[, start[, end]]): 检查字符串是否以指定后缀结尾。print(s.endswith("world")) # Output: True -
str.count(sub[, start[, end]]): 计算子串在字符串中出现的次数。print(s.count("o")) # Output: 2 -
str.isdigit(): 检查字符串是否只包含数字。print("123".isdigit()) # Output: True -
str.isalpha(): 检查字符串是否只包含字母。print("abc".isalpha()) # Output: True -
str.isalnum(): 检查字符串是否只包含字母和数字。print("abc123".isalnum()) # Output: True
2. 示例
下面是一个综合示例,展示如何使用这些方法:
s = " Python Programming "
print(s.strip().upper()) # Output: PYTHON PROGRAMMING
print(s.split()) # Output: ['Python', 'Programming']
print(', '.join(['Hello', 'World'])) # Output: Hello, World
print(s.replace("Python", "Java")) # Output: Java Programming
print(s.find("Programming")) # Output: 9
字符串逆序
在 Python 中,可以使用切片轻松逆序字符串。以下是示例:
s = "hello"
reversed_s = s[::-1]
print(reversed_s) # Output: olleh
如上便是本期的所有内容了,如果喜欢并觉得有帮助的话,希望可以博个点赞+收藏+关注🌹🌹🌹❤️ 🧡 💛,学海无涯苦作舟,愿与君一起共勉成长





















