Python 循环的高阶写法:简洁与高效的代码技巧

liftword2个月前 (02-08)技术文章21

在 Python 中,循环的高阶写法通常借助一些内置函数、生成器表达式以及高级的库,能够让代码更加简洁、优雅。以下是几种常见的高阶写法:

1. 列表推导式(List Comprehension)

列表推导式是 Python 中常用的简洁语法,可以在一行代码中实现循环和条件判断。

python



# 基本写法

squares = [x**2 for x in range(10)]

print(squares)



带条件的列表推导式

python



even_squares = [x**2 for x in range(10) if x % 2 == 0]

print(even_squares)



2. 字典推导式(Dict Comprehension)

类似列表推导式,字典推导式可以用于创建字典。

python



# 将数值作为键,平方作为值

squares_dict = {x: x**2 for x in range(5)}

print(squares_dict)



3. 集合推导式(Set Comprehension)

集合推导式的语法与列表推导式相同,返回的结果是一个集合。

python



unique_squares = {x**2 for x in range(10)}

print(unique_squares)



4. 生成器表达式(Generator Expression)

生成器表达式与列表推导式类似,但返回的是一个生成器对象,只有在需要时才会计算值,适用于大数据集的迭代。

python



squares_gen = (x**2 for x in range(10))

print(list(squares_gen)) # 使用时可以转为列表



5. map()函数

map() 是高阶函数,可以将函数应用到可迭代对象的每个元素上。

python



# 将每个元素平方

squares = map(lambda x: x**2, range(10))

print(list(squares))



6. filter()函数

filter() 函数用于筛选可迭代对象中的元素,返回满足条件的元素。

python



# 筛选偶数

even_numbers = filter(lambda x: x % 2 == 0, range(10))

print(list(even_numbers))



7. zip()函数

zip() 可以将多个可迭代对象打包成一个迭代器,常用于将多组数据“配对”。

python



names = ['Alice', 'Bob', 'Charlie']

ages = [25, 30, 35]

combined = zip(names, ages)

print(list(combined))



8. enumerate()函数

enumerate() 返回可迭代对象的索引和值,常用于需要索引时的循环。

python



names = ['Alice', 'Bob', 'Charlie']

for index, name in enumerate(names):

print(index, name)



9. itertools模块

itertools 提供了一系列用于操作迭代器的工具,如无限循环、排列组合等。

python



import itertools



# 无限循环

counter = itertools.count(start=1, step=2)

for _ in range(5):

print(next(counter))



10. reduce()函数

reduce()functools 模块导入,用于将一个可迭代对象的元素归约为一个单一值。它应用一个函数,将前两个元素操作后得到的结果继续与下一个元素操作。

python



from functools import reduce



# 计算列表的乘积

product = reduce(lambda x, y: x * y, [1, 2, 3, 4])

print(product)



11. 递归 (Recursion)

递归是一种函数调用自身的方式,常用于解决问题分解的场景。

python



# 计算阶乘

def factorial(n):

if n == 1:

return 1

else:

return n * factorial(n - 1)



print(factorial(5)) # 输出 120



总结

这些高阶写法让循环更加简洁、高效,并且更贴合 Python 语言的“优雅”设计理念。你可以根据具体的需求选择适合的方式来优化代码。

相关文章

Python常用算法学习(7) 动态规划,回溯法(原理+代码)-最全总结

引言:从斐波那契数列看动态规划  斐波那契数列:Fn = Fn-1 + Fn-2 ( n = 1,2 fib(1) = fib(2) = 1)练习:使用递归和非递归的方法来求解斐波那契数列的第 n 项...

按照概率学原理,你这牌一看就胡不了

撰文 比邻星春节假期,独乐乐不如众乐乐。如果要选择一种声音代表新春佳节的团聚,除了噼里啪啦的鞭炮、杯盏相碰的清脆,一句“三缺一”和麻将桌上哗啦啦的搓麻声必定占有一席之地。麻将在不同段位的玩家眼中代表着...

Python语言常用技巧汇总_python语言的常用语句

一、列表操作技巧列表推导式 # 传统循环 squares = [] for x in range(10): squares.append(x**2) # 列表推导...

零基础学习Python,看完这10个案例,让你快速上手掌握Python语言

文章前言今天给大家分享十个Python入门级别的小案例。案例一:排列组合 要求: 将4个数字可能组成的所有互不相同且无重复数字的排列组合列出。 分析: 排列就好了 代码:案例二:阶梯求和 要求: 企业...

python算法基础之回溯_python 回测代码

回溯法定义回溯法是一种选优搜索法,又称为试探法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条...

用Python制作炫酷的专属二维码_python简单二维码生成代码

点击上方头像关注我,每周上午 09:00准时推送,每月不定期赠送技术书籍,小窗口回复“资源”、“测试工具包”领取测试资源。本文5586字,阅读约需14分钟Hi,大家好。在此之前介绍过二维码如何测试:你...