python 推导式

推导式说明

推导式(Comprehensions)是Python中一种非常有用和灵活的工具,允许以简洁的方式从一个或多个迭代器快速创建数据结构。Python支持的推导式主要有四种:列表(List)推导式、字典(Dictionary)推导式、集合(Set)推导式和生成器(Generator)推导式。

列表推导式

用途:快速生成列表。
语法:[返回值 for 元素 in 可迭代对象 if 条件]
返回值:返回一个新的列表

示例

#生成0到9每个数的平方,只包括偶数

#推导式写法
squared_evens = [x**2 for x in range(10) if x % 2 == 0]
print(squared_evens)

#普通写法
squared_evens = []
for x in range(10):
    if x % 2 == 0:
        squared_evens.append(x**2)
print(squared_evens)

# 输出结果
[0, 4, 16, 36, 64]
# 打印九九乘法表。

#推导式写法
[print(' '.join(f"{i}*{j}={i * j:2}" for j in range(1, i + 1))) for i in range(1, 10)]

#普通写法
for i in range(1, 10):
    for j in range(1, i+1):
        print(f"{j}x{i}={i*j:2}", end="\t")
    print()
    
# 输出结果
1x1= 1	
1x2= 2	2x2= 4	
1x3= 3	2x3= 6	3x3= 9	
1x4= 4	2x4= 8	3x4=12	4x4=16	
1x5= 5	2x5=10	3x5=15	4x5=20	5x5=25	
1x6= 6	2x6=12	3x6=18	4x6=24	5x6=30	6x6=36	
1x7= 7	2x7=14	3x7=21	4x7=28	5x7=35	6x7=42	7x7=49	
1x8= 8	2x8=16	3x8=24	4x8=32	5x8=40	6x8=48	7x8=56	8x8=64	
1x9= 9	2x9=18	3x9=27	4x9=36	5x9=45	6x9=54	7x9=63	8x9=72	9x9=81
result = [(i,j) for i in range(7) for j in range(20,25) if i>4 and j>23]

# 普通写法
result = []
for i in range(7):
    for j in range(20, 25):
        if i > 4 and j > 23:
            result.append((i, j))

# 输出结果
[(5, 24), (6, 24)]
["{:04}.{}".format(i,"".join([chr(random.randint(97,122)) for j in range(10)])) for i in range(10)]

# 普通写法
result_list = []  
for i in range(10):
    random_string = ""  
    for j in range(10):
        random_character = chr(random.randint(97, 122))  
        random_string += random_character  
    formatted_string = "{:04}.{}".format(i, random_string)  
    result_list.append(formatted_string)  

print(result_list)

# 输出结果
['0000.zazvpobugw', '0001.xzwrgoiumx', '0002.klhgtboqll', '0003.voyrwbggrn', '0004.jumetngmuz', '0005.xxwxersszt', '0006.txphxctdsq', '0007.kxklliexjf', '0008.wekigtlifi', '0009.wisemnokrh']

字典推导式

用途:快速生成字典。
语法:{返回值 for 元素 in 可迭代对象 if 条件}
返回值:立即返回一个字典

 

示例

# 将单词列表转换为字典,其中键是单词,值是单词的长度。

# 推导式写法
words = ["apple", "banana", "cherry"]
word_lengths = {word: len(word) for word in words}

普通写法
words = ["apple", "banana", "cherry"]
word_lengths = {}
for word in words:
    word_lengths[word] = len(word)

# 输出结果
{'apple': 5, 'banana': 6, 'cherry': 6}

集合推导式

用途:快速生成集合。
语法:{返回值 for 元素 in 可迭代对象 if 条件}
返回值:立即返回一个集合

示例

# 生成一个包含0到9内所有偶数的集合。

# 推导式写法
evens = {x for x in range(10) if x % 2 == 0}

# 普通写法
evens = set()
for x in range(10):
    if x % 2 == 0:
        evens.add(x)

# 输出
{0, 2, 4, 6, 8}

生成器推导式

用途:创建一个生成器,用于按需生成项目,节省内存。
语法:(返回值 for 元素 in 可迭代对象 if 条件)
返回值:返回一个生成器

示例

# 创建一个生成器,生成0到9的每个数字的平方。

# 推导式写法
squared_numbers = (x**2 for x in range(10))

# 普通写法
def squared_numbers_generator():
    for x in range(10):
        yield x**2
squared_numbers = squared_numbers_generator()
posted @ 2024-04-04 15:32  小吉猫  阅读(54)  评论(0编辑  收藏  举报