阅读视图

发现新文章,点击刷新页面。

救命!Python 这些基础操作居然能省一半工作量

作为一个常年和 Python 打交道的 “搬砖人”,我发现很多新手甚至老手,都会忽略一些基础但超实用的小技巧。明明一行代码能搞定的事,非要写个循环绕半天,属实是给自己加工作量了。

今天就来分享几个我日常高频使用的 Python 基础操作,简单好记,用起来是真的香!

1. 交换变量?不用临时变量也能行

新手交换两个变量,第一反应可能是定义一个临时变量中转:

a = 10
b = 20
# 新手写法
temp = a
a = b
b = temp

但 Python 里有更简洁的写法,直接一行搞定,逻辑还清晰:

a = 10
b = 20
# 简洁写法
a, b = b, a

不仅能交换两个变量,多个变量交换也同样适用,比如a, b, c = c, a, b,直接打乱顺序重新赋值,超方便。

2. 列表去重?别再写循环遍历了

面对一个有重复元素的列表,想快速去重,很多人会写个 for 循环,逐个判断是否在新列表里。

lst = [1, 2, 2, 3, 4, 4, 5]
new_lst = []
for i in lst:
    if i not in new_lst:
        new_lst.append(i)

但其实用 Python 的集合特性,一行就能去重,效率还更高:

lst = [1, 2, 2, 3, 4, 4, 5]
new_lst = list(set(lst))

不过要注意,集合是无序的,如果需要保持原列表的顺序,可以用dict.fromkeys(lst),再转成列表就行。

3. 快速拼接字符串?加号不如 join

拼接多个字符串时,用+号虽然直观,但效率很低,尤其是字符串数量多的时候。

str_list = ["我", "爱", "Python", "编程"]
result = ""
for s in str_list:
    result += s

推荐用join方法,不仅代码简洁,执行效率也提升不少:

str_list = ["我", "爱", "Python", "编程"]
result = "".join(str_list)

如果想给字符串之间加个分隔符,比如逗号,直接把引号里的内容改成,就行,","join(str_list)就能得到"我,爱,Python,编程"

4. 字典合并?三种方法任你选

日常开发中经常需要合并两个字典,新手可能会用循环逐个添加,其实 Python 有好几种简洁的写法。

dict1 = {"name": "张三", "age": 20}
dict2 = {"gender": "男", "city": "北京"}

# 方法1:用update方法
dict1.update(dict2)

# 方法2:用**解包
result = {**dict1, **dict2}

# 方法3:Python3.9+ 可用|运算符
result = dict1 | dict2

三种方法都能实现字典合并,需要注意的是,update会修改原字典,而另外两种方法会生成一个新字典,根据需求选择就行。

5. 快速生成列表?列表推导式 yyds

想根据一个列表生成新的列表,比如把所有元素乘以 2,新手可能会写循环:

lst = [1, 2, 3, 4, 5]
new_lst = []
for i in lst:
    new_lst.append(i * 2)

用列表推导式的话,一行就能搞定,代码更紧凑:

lst = [1, 2, 3, 4, 5]
new_lst = [i * 2 for i in lst]

还能加上条件判断,比如只生成偶数的倍数:[i * 2 for i in lst if i % 2 == 0],实用性拉满。

Python 基础再升级!5 个超实用小技巧,写代码快人一步

刚入门 Python 能实现功能,但想让代码更简洁、更高效?这 5 个进阶偏基础的小技巧,看似简单却能大幅提升编码体验,每个都附可直接运行的示例,新手也能轻松掌握~

1. 巧用 enumerate:遍历列表同时获取索引

遍历列表时想知道元素的位置,不用手动加计数器,enumerate() 能直接返回索引和元素,还能自定义起始索引。

# 待遍历的列表
fruits = ["苹果", "香蕉", "橙子", "葡萄"]

# 基础用法:默认从0开始
for idx, fruit in enumerate(fruits):
    print(f"索引{idx}{fruit}")

# 进阶用法:指定起始索引(比如从1开始)
print("\n指定起始索引:")
for idx, fruit in enumerate(fruits, start=1):
    print(f"第{idx}个水果:{fruit}")

# 输出:
# 索引0:苹果
# 索引1:香蕉
# 索引2:橙子
# 索引3:葡萄
# 
# 指定起始索引:
# 第1个水果:苹果
# 第2个水果:香蕉
# 第3个水果:橙子
# 第4个水果:葡萄

2. zip () 函数:多列表同步遍历,超省心

需要同时遍历多个列表的对应元素时,zip() 能把多个可迭代对象打包成元组,避免手动处理索引。

# 多个关联列表
names = ["张三", "李四", "王五"]
scores = [85, 92, 78]
subjects = ["数学", "语文", "英语"]

# 同步遍历三个列表
for name, score, subject in zip(names, scores, subjects):
    print(f"{name}{subject}成绩:{score}分")

# 输出:
# 张三的数学成绩:85分
# 李四的语文成绩:92分
# 王五的英语成绩:78分

3. 用 set 快速去重:比列表遍历高效 N 倍

列表去重不用写循环判断,转成集合(set)再转回列表,一行就能搞定,且时间复杂度更低。

# 含重复元素的列表
nums = [1, 2, 2, 3, 3, 3, 4, 4, 5]

# 快速去重
unique_nums = list(set(nums))
print("去重后:", unique_nums)  # 输出:去重后:[1, 2, 3, 4, 5]

# 拓展:保持原列表顺序(Python 3.7+)
unique_nums_ordered = list(dict.fromkeys(nums))
print("去重且保序:", unique_nums_ordered)  # 输出:去重且保序:[1, 2, 3, 4, 5]

4. 三元表达式:简化简单的条件判断

简单的 if-else 赋值逻辑,用三元表达式能精简代码,保持可读性的同时减少行数。

# 需求:判断成绩是否及格,返回对应提示
score = 88

# 传统if-else写法
if score >= 60:
    result = "及格"
else:
    result = "不及格"

# 三元表达式写法
result = "及格" if score >= 60 else "不及格"
print(f"成绩{score}{result}")  # 输出:成绩88:及格

# 进阶:嵌套三元表达式(适用于简单场景)
score = 95
result = "优秀" if score >= 90 else "良好" if score >= 80 else "及格" if score >= 60 else "不及格"
print(f"成绩{score}{result}")  # 输出:成绩95:优秀

5. with 语句:自动管理文件 / 资源,告别忘记 close ()

操作文件时用with语句,无需手动调用close(),代码块执行完会自动关闭文件,避免资源泄露。

# 传统写法(需手动close)
f = open("test.txt", "w", encoding="utf-8")
f.write("Python基础进阶技巧")
f.close()

# with语句写法(推荐)
with open("test.txt", "r", encoding="utf-8") as f:
    content = f.read()
    print("文件内容:", content)  # 输出:文件内容:Python基础进阶技巧

# 注:with语句块结束后,文件会自动关闭,即使报错也不影响

总结

  1. enumerate() 遍历带索引、zip() 同步遍历多列表,解决遍历场景的常见痛点;
  2. 集合(set)快速去重效率高,三元表达式简化简单条件赋值;
  3. with 语句自动管理资源,操作文件 / 网络连接时更安全。
❌