全面的 Python 数据结构备忘单
全面的 Python 数据结构备忘单
目录
- 列表
- 元组
- 套装
- 词典
- 字符串
- 数组
- 堆栈
- 队列
- 链接列表
- 树
- 堆
- 图表
- 高级数据结构
列表
列表是有序的、可变的序列。
创建
empty_list = [] list_with_items = [1, 2, 3] list_from_iterable = list("abc") list_comprehension = [x for x in range(10) if x % 2 == 0]
常用操作
# Accessing elements first_item = my_list[0] last_item = my_list[-1] # Slicing subset = my_list[1:4] # Elements 1 to 3 reversed_list = my_list[::-1] # Adding elements my_list.append(4) # Add to end my_list.insert(0, 0) # Insert at specific index my_list.extend([5, 6, 7]) # Add multiple elements # Removing elements removed_item = my_list.pop() # Remove and return last item my_list.remove(3) # Remove first occurrence of 3 del my_list[0] # Remove item at index 0 # Other operations length = len(my_list) index = my_list.index(4) # Find index of first occurrence of 4 count = my_list.count(2) # Count occurrences of 2 my_list.sort() # Sort in place sorted_list = sorted(my_list) # Return new sorted list my_list.reverse() # Reverse in place
先进技术
# List as stack stack = [1, 2, 3] stack.append(4) # Push top_item = stack.pop() # Pop # List as queue (not efficient, use collections.deque instead) queue = [1, 2, 3] queue.append(4) # Enqueue first_item = queue.pop(0) # Dequeue # Nested lists matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] flattened = [item for sublist in matrix for item in sublist] # List multiplication repeated_list = [0] * 5 # [0, 0, 0, 0, 0] # List unpacking a, *b, c = [1, 2, 3, 4, 5] # a=1, b=[2, 3, 4], c=5
元组
元组是有序的、不可变的序列。
创建
empty_tuple = () single_item_tuple = (1,) # Note the comma tuple_with_items = (1, 2, 3) tuple_from_iterable = tuple("abc")
常用操作
# Accessing elements (similar to lists) first_item = my_tuple[0] last_item = my_tuple[-1] # Slicing (similar to lists) subset = my_tuple[1:4] # Other operations length = len(my_tuple) index = my_tuple.index(2) count = my_tuple.count(3) # Tuple unpacking a, b, c = (1, 2, 3)
先进技术
# Named tuples from collections import namedtuple Point = namedtuple('Point', ['x', 'y']) p = Point(11, y=22) print(p.x, p.y) # Tuple as dictionary keys (immutable, so allowed) dict_with_tuple_keys = {(1, 2): 'value'}
套
集合是独特元素的无序集合。
创建
empty_set = set() set_with_items = {1, 2, 3} set_from_iterable = set([1, 2, 2, 3, 3]) # {1, 2, 3} set_comprehension = {x for x in range(10) if x % 2 == 0}
常用操作
# Adding elements my_set.add(4) my_set.update([5, 6, 7]) # Removing elements my_set.remove(3) # Raises KeyError if not found my_set.discard(3) # No error if not found popped_item = my_set.pop() # Remove and return an arbitrary element # Other operations length = len(my_set) is_member = 2 in my_set # Set operations union = set1 | set2 intersection = set1 & set2 difference = set1 - set2 symmetric_difference = set1 ^ set2
先进技术
# Frozen sets (immutable) frozen = frozenset([1, 2, 3]) # Set comparisons is_subset = set1 <= set2 is_superset = set1 >= set2 is_disjoint = set1.isdisjoint(set2) # Set of sets (requires frozenset) set_of_sets = {frozenset([1, 2]), frozenset([3, 4])}
词典
字典是键值对的可变映射。
创建
empty_dict = {} dict_with_items = {'a': 1, 'b': 2, 'c': 3} dict_from_tuples = dict([('a', 1), ('b', 2), ('c', 3)]) dict_comprehension = {x: x**2 for x in range(5)}
常用操作
# Accessing elements value = my_dict['key'] value = my_dict.get('key', default_value) # Adding/Updating elements my_dict['new_key'] = value my_dict.update({'key1': value1, 'key2': value2}) # Removing elements del my_dict['key'] popped_value = my_dict.pop('key', default_value) last_item = my_dict.popitem() # Remove and return an arbitrary key-value pair # Other operations keys = my_dict.keys() values = my_dict.values() items = my_dict.items() length = len(my_dict) is_key_present = 'key' in my_dict
先进技术
# Dictionary unpacking merged_dict = {**dict1, **dict2} # Default dictionaries from collections import defaultdict dd = defaultdict(list) dd['key'].append(1) # No KeyError # Ordered dictionaries (Python 3.7+ dictionaries are ordered by default) from collections import OrderedDict od = OrderedDict([('a', 1), ('b', 2), ('c', 3)]) # Counter from collections import Counter c = Counter(['a', 'b', 'c', 'a', 'b', 'b']) print(c.most_common(2)) # [('b', 3), ('a', 2)]
弦乐
字符串是不可变的 Unicode 字符序列。
创建
single_quotes = 'Hello' double_quotes = "World" triple_quotes = '''Multiline string''' raw_string = r'C:\Users\name' f_string = f"The answer is {40 + 2}"
常用操作
# Accessing characters first_char = my_string[0] last_char = my_string[-1] # Slicing (similar to lists) substring = my_string[1:4] # String methods upper_case = my_string.upper() lower_case = my_string.lower() stripped = my_string.strip() split_list = my_string.split(',') joined = ', '.join(['a', 'b', 'c']) # Other operations length = len(my_string) is_substring = 'sub' in my_string char_count = my_string.count('a')
先进技术
# String formatting formatted = "{} {}".format("Hello", "World") formatted = "%s %s" % ("Hello", "World") # Regular expressions import re pattern = r'\d+' matches = re.findall(pattern, my_string) # Unicode handling unicode_string = u'\u0061\u0062\u0063'
数组
数组是紧凑的数值序列(来自数组模块)。
创建和使用
from array import array int_array = array('i', [1, 2, 3, 4, 5]) float_array = array('f', (1.0, 1.5, 2.0, 2.5)) # Operations (similar to lists) int_array.append(6) int_array.extend([7, 8, 9]) popped_value = int_array.pop()
堆栈
堆栈可以使用lists或collections.deque来实现。
实施和使用
# Using list stack = [] stack.append(1) # Push stack.append(2) top_item = stack.pop() # Pop # Using deque (more efficient) from collections import deque stack = deque() stack.append(1) # Push stack.append(2) top_item = stack.pop() # Pop
队列
队列可以使用collections.deque或queue.Queue来实现。
实施和使用
# Using deque from collections import deque queue = deque() queue.append(1) # Enqueue queue.append(2) first_item = queue.popleft() # Dequeue # Using Queue (thread-safe) from queue import Queue q = Queue() q.put(1) # Enqueue q.put(2) first_item = q.get() # Dequeue
链表
Python没有内置链表,但可以实现。
实施简单
class Node: def __init__(self, data): self.data = data self.next = None class LinkedList: def __init__(self): self.head = None def append(self, data): if not self.head: self.head = Node(data) return current = self.head while current.next: current = current.next current.next = Node(data)
树木
树可以使用自定义类来实现。
简单的二叉树实现
class TreeNode: def __init__(self, value): self.value = value self.left = None self.right = None class BinaryTree: def __init__(self, root): self.root = TreeNode(root) def insert(self, value): self._insert_recursive(self.root, value) def _insert_recursive(self, node, value): if value < node.value: if node.left is None: node.left = TreeNode(value) else: self._insert_recursive(node.left, value) else: if node.right is None: node.right = TreeNode(value) else: self._insert_recursive(node.right, value)
堆
堆可以使用 heapq 模块来实现。
用法
import heapq # Create a heap heap = [] heapq.heappush(heap, 3) heapq.heappush(heap, 1) heapq.heappush(heap, 4) # Pop smallest item smallest = heapq.heappop(heap) # Create a heap from a list my_list = [3, 1, 4, 1, 5, 9] heapq.heapify(my_list)
图表
图可以使用字典来实现。
实施简单
class Graph: def __init__(self): self.graph = {} def add_edge(self, u, v): if u not in self.graph: self.graph[u] = [] self.graph[u].append(v) def bfs(self, start): visited = set() queue = [start] visited.add(start) while queue: vertex = queue.pop(0) print(vertex, end=' ') for neighbor in self.graph.get(vertex, []): if neighbor not in visited: visited.add(neighbor) queue.append(neighbor)
高级数据结构
特里树
class TrieNode: def __init__(self): self.children = {} self.is_end = False class Trie: def __init__(self): self.root = TrieNode() def insert(self, word): node = self.root for char in word: if char not in node.children: node.children[char] = TrieNode() node = node.children[char] node.is_end = True def search(self, word): node = self.root for char in word: if char not in node.children: return False node = node.children[char] return node.is_end
不相交集(并查集)
class DisjointSet: def __init__(self, vertices): self.parent = {v: v for v in vertices} self.rank = {v: 0 for v in vertices} def find(self, item): if self.parent[item] != item: self.parent[item] = self.find(self.parent[item]) return self.parent[item] def union(self, x, y): xroot = self.find(x) yroot = self.find(y) if self.rank[xroot] < self.rank[yroot]: self.parent[xroot] = yroot elif self.rank[xroot] > self.rank[yroot]: self.parent[yroot] = xroot else: self.parent[yroot] = xroot self.rank[xroot] += 1
这份全面的备忘单涵盖了广泛的 Python 数据结构,从基本的内置类型到更高级的自定义实现。每个部分都包含创建方法、常用操作以及适用的高级技术。
0
以上是全面的 Python 数据结构备忘单的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undress AI Tool
免费脱衣服图片

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

要入门量子机器学习(QML),首选工具是Python,需安装PennyLane、Qiskit、TensorFlowQuantum或PyTorchQuantum等库;接着通过运行示例熟悉流程,如使用PennyLane构建量子神经网络;然后按照数据集准备、数据编码、构建参数化量子线路、经典优化器训练等步骤实现模型;实战中应避免一开始就追求复杂模型,关注硬件限制,采用混合模型结构,并持续参考最新文献和官方文档以跟进发展。

本文为您精选了多个顶级的Python“成品”项目网站与高水平“大片”级学习资源入口。无论您是想寻找开发灵感、观摩学习大师级的源代码,还是系统性地提升实战能力,这些平台都是不容错过的宝库,能帮助您快速成长为Python高手。

使用subprocess.run()可安全执行shell命令并捕获输出,推荐以列表传参避免注入风险;2.需要shell特性时可设shell=True,但需警惕命令注入;3.使用subprocess.Popen可实现实时输出处理;4.设置check=True可在命令失败时抛出异常;5.简单场景可直接链式调用获取输出;日常应优先使用subprocess.run(),避免使用os.system()或已弃用模块,以上方法覆盖了Python中执行shell命令的核心用法。

使用Seaborn的jointplot可快速可视化两个变量间的关系及各自分布;2.基础散点图通过sns.jointplot(data=tips,x="total_bill",y="tip",kind="scatter")实现,中心为散点图,上下和右侧显示直方图;3.添加回归线和密度信息可用kind="reg",并结合marginal_kws设置边缘图样式;4.数据量大时推荐kind="hex",用

掌握Python网络爬虫需抓住三个核心步骤:1.使用requests发起请求,通过get方法获取网页内容,注意设置headers、处理异常及遵守robots.txt;2.利用BeautifulSoup或XPath提取数据,前者适合简单解析,后者更灵活适用于复杂结构;3.针对动态加载内容使用Selenium模拟浏览器操作,虽速度较慢但能应对复杂页面,也可尝试寻找网站API接口提高效率。

使用httpx.AsyncClient可高效发起异步HTTP请求,1.基本GET请求通过asyncwith管理客户端并用awaitclient.get发起非阻塞请求;2.并发多个请求时结合asyncio.gather可显着提升性能,总耗时等于最慢请求;3.支持自定义headers、认证、base_url和超时设置;4.可发送POST请求并携带JSON数据;5.注意避免混用同步异步代码,代理支持需注意后端兼容性,适合用于爬虫或API聚合等场景。

字符串列表可用join()方法合并,如''.join(words)得到"HelloworldfromPython";2.数字列表需先用map(str,numbers)或[str(x)forxinnumbers]转为字符串后才能join;3.任意类型列表可直接用str()转换为带括号和引号的字符串,适用于调试;4.自定义格式可用生成器表达式结合join()实现,如'|'.join(f"[{item}]"foriteminitems)输出"[a]|[

安装pyodbc:使用pipinstallpyodbc命令安装库;2.连接SQLServer:通过pyodbc.connect()方法,使用包含DRIVER、SERVER、DATABASE、UID/PWD或Trusted_Connection的连接字符串,分别支持SQL身份验证或Windows身份验证;3.查看已安装驱动:运行pyodbc.drivers()并筛选含'SQLServer'的驱动名,确保使用如'ODBCDriver17forSQLServer'等正确驱动名称;4.连接字符串关键参数
