Python 常用技能手册
四大数据类型
整数 int
表示整数值,例如:42, -10。
浮点数 float
表示带有小数部分的数值,例如:3.14, -0.5。
字符串 str
表示字符或文本序列,用引号(单引号或双引号)括起来,例如:“Hello, World!”。
布尔值 bool
表示真(True)或假(False)的值。
四大基本数据结构
列表 list
又称一维数组。表示有序、可变的集合,可以包含不同类型的元素。
创建
一维数组
numbers = [1, 2, 3, 4, 5]
?二维数组,赋值0
matrix = [[0 for col in range(cols)] for row in range(rows)]
二维数组,空
matrix = [[] for row in range(rows)]
遍历
?一维数组
first_number = numbers[0] # 访问第一个元素
last_number = numbers[-1] # 访问最后一个元素
?二维数组
for row in range(rows):
for col in range(cols):
print(matrix[row][col])
更新
一维数组
numbers[1] = 10 # 将索引为1的元素更新为10
二维数组
matrix[row][col] = value
添加
numbers.append(6) # 在数组末尾添加一个元素
numbers.insert(2, 7) # 在索引为2的位置插入元素7
删除
del numbers[3] # 删除索引为3的元素
numbers.remove(4) # 删除值为4的第一个元素
求长度
length = len(numbers) # 获取数组的长度
切片
一维数组?
sliced_numbers = numbers[1:4] # 获取索引1到3的元素切片
二维数组,取原矩阵的[2:5][2:5]
new_matrix = [row[2:5] for row in maxtrix[2:5]]
计数
str1 = "Hello, World!"
count = str1.count("l")
print(count) # 输出结果:3
查询索引?
index()是在序列中检索参数并返回第一次出现的索引位置,Python下标默认从0计数。
A = [123, 'xyz', 'zara', 'abc']
print(A.index('xyz')) # 输出1
元组 tuple
表示有序、不可变的集合,可以包含不同类型的元素。
字典 dict
表示无序、键值对的集合,用大括号括起来。
获取
使用字典的键来获取对应的值,可以使用方括号或get()方法。
my_dict = {'name': 'Alice', 'age': 25, 'gender': 'female'}
print(my_dict['name']) # 输出:Alice
print(my_dict.get('age')) # 输出:25
添加/更新
使用字典的键来添加或修改对应的值,可以使用方括号或update()方法。?
my_dict = {'name': 'Alice', 'age': 25, 'gender': 'female'}
my_dict['email'] = 'alice@example.com'
my_dict.update({'age': 26, 'gender': 'unknown'})
print(my_dict) # 输出:{'name': 'Alice', 'age': 26, 'gender': 'unknown', 'email': 'alice@example.com'}
?删除
使用del语句或pop()方法来删除字典中的键值对。
my_dict = {'name': 'Alice', 'age': 25, 'gender': 'female'}
del my_dict['age']
my_dict.pop('gender')
print(my_dict) # 输出:{'name': 'Alice'}
获取所有键或值
使用keys()方法获取所有键,使用values()方法获取所有值。
my_dict = {'name': 'Alice', 'age': 25, 'gender': 'female'}
print(my_dict.keys()) # 输出:dict_keys(['name', 'age', 'gender'])
print(my_dict.values()) # 输出:dict_values(['Alice', 25, 'female'])
判断键是否存在
使用in判断键是否存在于字典中。?
my_dict = {'name': 'Alice', 'age': 25, 'gender': 'female'}
print('name' in my_dict) # 输出:True
集合 set
表示无序、唯一的元素集合,用大括号括起来。
交集 &
返回两个集合中都存在的元素。
set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}
intersection = set1.intersection(set2)
print(intersection) # {4, 5}
intersection = set1 & set2
print(intersection) # {4, 5}
并集 |
返回两个集合中所有的元素,去重后组成的新集合。
set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}
union = set1.union(set2)
print(union) # {1, 2, 3, 4, 5, 6, 7, 8}
union = set1 | set2
print(union) # {1, 2, 3, 4, 5, 6, 7, 8}
差集/补集 -
返回属于第一个集合但不属于第二个集合的元素。
set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}
difference = set1.difference(set2)
print(difference) # {1, 2, 3}
difference = set1 - set2
print(difference) # {1, 2, 3}
对称差集 ^
返回只属于一个集合而不属于另一个集合的元素。
set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}
symmetric_difference = set1.symmetric_difference(set2)
print(symmetric_difference) # {1, 2, 3, 6, 7, 8}
symmetric_difference = set1 ^ set2
print(symmetric_difference) # {1, 2, 3, 6, 7, 8}
模块 module
Python模块就是包含Python代码的文件,模块名就是文件名(去掉.py后缀)。模块可以包含函数、类、变量等。模块可以提高代码的可维护性和重复使用,避免函数名和变量名冲突。
内置模块
拷贝 copy
浅拷贝 copy.copy
浅拷贝是指创建一个新对象,但是这个新对象中的元素是原对象的引用。新对象中的元素和原对象中的元素指向同一个内存地址。
import copy
list1 = [1, 2, [3, 4]]
list2 = copy.copy(list1)
print(list1) # [1, 2, [3, 4]]
print(list2) # [1, 2, [3, 4]]
list1[2][0] = 5
print(list1) # [1, 2, [5, 4]]
print(list2) # [1, 2, [5, 4]] # 修改一个元素,另一个元素也会发生变化
?深拷贝 copy.deepcopy
?在 Python 中,可以使用 copy 模块中的 deepcopy() 函数来实现二维数组的任意拷贝。deepcopy() 函数可以递归地复制对象中的所有元素,包括嵌套的对象。
import copy
# 原始二维数组
arr = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
# 使用 deepcopy() 函数进行拷贝
arr_copy = copy.deepcopy(arr)
# 修改拷贝后的数组
arr_copy[0][0] = 0
# 打印原始数组和拷贝后的数组
print("原始数组:", arr)
print("拷贝后的数组:", arr_copy)
堆队列 heapq
?内置排序
?列表排序
list.sort() # 列表排序
list.reverse() # 列表逆序
元组排序
sorted(tuple) # 元组排序
reversed(tuple) # 元组逆序
字符串排序
?按长度排序
words = ["apple", "banana", "cherry"]
sorted_words = sorted(words, key=len)
print(sorted_words) # ['apple', 'cherry', 'banana']
按字典序排序
strings = ["apple", "banana", "cherry", "date"]
sorted_strings = sorted(strings)
print(sorted_strings) # ['apple', 'banana', 'cherry', 'date']
?类排序
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def __lt__(self, other):
# 实现 less than方法,来实现排序
return self.age < other.age
people = [Person("Alice", 25), Person("Bob", 30), Person("Charlie", 20)]
sorted_people = sorted(people)
print([p.name for p in sorted_people]) # ['Charlie', 'Alice', 'Bob']
Lambda表达式排序
# 对元组列表按照第一个元素升序排序
my_list = [(2, 'b'), (3, 'c'), (1, 'a')]
sorted_list = sorted(my_list, key=lambda x: x[0])
print(sorted_list) # 输出 [(1, 'a'), (2, 'b'), (3, 'c')]
三方模块
包 package
Python包就是一个包含模块文件的目录,目录名称就是包名称。Python引入了按目录来组织模块的方式,是为了避免模块名冲突,不同包中的模块名可以相同。
通常来说,Python中的包,和Java中的库泛指同一个概念,这里不作区分。
类型注解 typing包
Python的typing库提供了类型提示的功能,可以在代码中指定参数和返回值的类型。
整数 int
def add_numbers(a: int, b: int) -> int:
return a + b
浮点数 float
def divide_numbers(a: float, b: float) -> float:
return a / b
字符串 str
def greet(name: str) -> str:
return "Hello, " + name + "!"
布尔值 bool
def is_positive(number: int) -> bool:
return number > 0
类型变量 TypeVar
from typing import TypeVar
T = TypeVar('T')
def get_first_element(arr: list[T]) -> T:
return arr[0]
?
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!