Python 常用技能手册

2023-12-26 15:45:58

四大数据类型

整数 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]


?

文章来源:https://blog.csdn.net/u012925450/article/details/135215326
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。