Python 的简洁和强大使其成为许多开发者的首选语言。本文将介绍36个常用的Python经典代码案例。这些示例覆盖了基础语法、常见任务、以及一些高级功能。
1. 列表推导式
fizz_buzz_list = [ "FizzBuzz" if i % 15 == 0 else "Fizz" if i % 3 == 0 else "Buzz" if i % 5 == 0 else i for i in range(1, 101) ] print(fizz_buzz_list)
这个例子展示了列表推导式,用于生成FizzBuzz序列。
2. 使用with
语句和csv
模块读取CSV文件
import csv with open('data.csv', mode='r') as file: csvFile = csv.reader(file) for row in csvFile: print(row)
csv
模块是处理CSV文件的利器,与with
语句结合可以确保文件正确关闭。
3. 正则表达式查找字符串
import re pattern = r'\b[A-Za-z][A-Za-z0-9_]*\b' text = "Hello, this is a test string with username: JohnDoe" matches = re.findall(pattern, text) print(matches)
正则表达式是强大的文本匹配工具,这里用来找出字符串中的所有单词。
4. 计算字符串中某个字符的数量
text = "Hello, World!" char = "l" count = text.count(char) print(f"The character '{char}' appears {count} times.")
count()
方法可以快速统计子串在字符串中的出现次数。
5. 使用set进行去重
duplicates = [1, 2, 2, 3, 4, 4, 5] unique_list = list(set(duplicates)) print(unique_list)
集合(set)是一个无序不重复的元素集,非常适合去重。
6. 使用format()
格式化字符串
name = "John" age = 30 print("My name is {} and I am {} years old.".format(name, age))
format()
方法使字符串格式化更加灵活和清晰。
7. 实现一个简单的缓存装饰器
def cache(func): cache_dict = {} def wrapper(num): if num in cache_dict: return cache_dict[num] else: val = func(num) cache_dict[num] = val return val return wrapper @cache def fibonacci(n): if n < 2: return n return fibonacci(n-1) + fibonacci(n-2) print(fibonacci(10))
装饰器可以用来缓存函数的结果,提高性能。
8. 使用try-except-else-finally
处理异常
try: result = 10 / 0 except ZeroDivisionError: print("Cannot divide by zero") else: print("Result is:", result) finally: print("Execution complete.")
完整的异常处理流程可以让我们更好地控制程序执行。
9. 断言(assertion)的使用
def divide(a, b): assert b != 0, "Division by zero is not allowed" return a / b print(divide(10, 0))
断言可以帮助我们在开发阶段捕捉到错误条件。
10. 路径操作
import os path = "/path/to/some/file.txt" dirname = os.path.dirname(path) basename = os.path.basename(path) print("Directory:", dirname) print("Basename:", basename)
os.path
模块提供了许多实用的路径操作函数。
11. 环境变量的读取和设置
import os # 读取环境变量 print("PATH:", os.environ["PATH"]) # 设置环境变量 os.environ["NEW_VAR"] = "NewValue" print("NEW_VAR:", os.environ["NEW_VAR"])
os.environ
允许我们访问和修改环境变量。
12. 使用itertools
模块
import itertools for combination in itertools.combinations([1, 2, 3], 2): print(combination)
itertools
模块提供了一系列用于创建迭代器的函数,非常有用。
13. 日期时间计算和操作
from datetime import datetime, timedelta now = datetime.utcnow() one_day = timedelta(days=1) yesterday = now - one_day print("Yesterday's date:", yesterday)
日期时间计算是常见的需求,datetime
模块提供了丰富的类和方法。
14. 排序和反序列表
numbers = [3, 1, 4, 1, 5, 9, 2, 6] numbers.sort() print("Sorted:", numbers) numbers.reverse() print("Reversed:", numbers)
列表对象自带的 sort()
和 reverse()
方法可以方便地对列表进行排序和反序。
15. 使用json
模块处理JSON数据
import json data = {"name": "John", "age": 30} json_data = json.dumps(data) print(json_data) parsed_data = json.loads(json_data) print(parsed_data)
json
模块使得Python处理JSON数据变得简单。
16. 使用collections
模块的defaultdict
from collections import defaultdict dd = defaultdict(int) dd["apple"] = 1 dd["banana"] = 2 print(dd["apple"]) # 输出:1 print(dd["orange"]) # 输出: 0,不存在的键返回默认值0
defaultdict
是字典的一个子类,它提供了一个默认值,用于字典中尝试访问不存在的键。
17. 使用functools
模块的reduce
函数
from functools import reduce from operator import add numbers = [1, 2, 3, 4] total = reduce(add, numbers) print(total) # 输出:10
reduce
函数可以将一个二元函数累积地应用到一个序列的元素上,从左到右,以便将序列减少为单个值。
18. 使用threading
模块进行简单的多线程编程
import threading def print_numbers(): for i in range(10): print(i) thread = threading.Thread(target=print_numbers) thread.start() thread.join()
threading
模块允许我们创建和管理线程,这是实现并发的一种方式。
19. 使用multiprocessing
模块进行多进程编程
from multiprocessing import Process, cpu_count def print_hello(): print("Hello from child process") if __name__ == '__main__': processes = [] for _ in range(cpu_count()): p = Process(target=print_hello) p.start() processes.append(p) for p in processes: p.join()
multiprocessing
模块是Python中进行进程编程的关键模块。
20. 使用requests
模块进行HTTP请求
import requests response = requests.get("https://www.example.com") print(response.status_code) print(response.text)
requests
模块简化了HTTP请求的相关操作,是进行网络编程的好帮手。
21. 使用map()函数将字符串转换为整数列表
string_numbers = "1 2 3 4 5" numbers = list(map(int, string_numbers.split())) print(numbers)
map()
函数可以对一个序列的每个元素应用指定的函数。
22. 条件语句
x = 7 if x > 5: print("x is greater than 5") else: print("x is less than or equal to 5")
条件语句是控制程序流程的基本构建块。
23. for循环遍历列表
fruits = ["apple", "banana", "cherry"] for fruit in fruits: print(fruit)
for
循环在Python中是常用的迭代工具。
24. while循环
count = 0 while count < 5: print(count) count += 1
while
循环允许程序按条件重复执行代码。
25. 使用enumerate()获取列表的索引和值
for index, value in enumerate(["apple", "banana", "cherry"]): print(index, value)
enumerate()
函数可以同时获得元素的索引和值,使代码更简洁。
26. 列表切片
fruits = ["apple", "banana", "cherry", "date", "elderberry"] print(fruits[1:4])
列表切片是访问列表子集的一种快捷方式。
27. 字符串格式化
name = "John" age = 30 print(f"My name is {name} and I am {age} years old.")
字符串格式化是Python中处理字符串的重要方法。
28. 异常处理
try: result = 10 / 0 except ZeroDivisionError: print("Cannot divide by zero")
异常处理可以帮助我们捕获和处理错误。
29. 类定义
class Person: def __init__(self, name, age): self.name = name self.age = age def greet(self): print(f"Hello, my name is {self.name} and I am {self.age} years old.")
类的使用是面向对象编程的核心。
30. 集合并集
fruits_set = {"apple", "banana", "cherry"} veggies_set = {"carrot", "broccoli", "banana"} print(fruits_set | veggies_set)
集合操作可以方便地处理一组唯一的元素。
31. 创建字典
person_dict = {"name": "John", "age": 30, "city": "New York"} print(person_dict)
字典是存储键值对的数据结构。
32. 访问字典值
person_dict = {"name": "John", "age": 30, "city": "New York"} print(person_dict["name"])
通过键来访问字典中的值。
33. 删除字典元素
person_dict = {"name": "John", "age": 30, "city": "New York"} del person_dict["age"] print(person_dict)
在字典中删除元素同样容易。
34. 生成器函数
def countdown(n): while n > 0: yield n n -= 1 for i in countdown(5): print(i)
生成器可以创建迭代器,按需产生值。
35. 使用zip()同时遍历多个列表
names = ["Alice", "Bob", "Charlie"] ages = [25, 30, 35] for name, age in zip(names, ages): print(name, age)
使用 zip()
可以方便地并行迭代多个序列。