三元表达式
在Python中,三元表达式是一种简洁的条件表达式,用于根据条件选择两个不同的值。它的语法形式如下:
value_if_true if condition else value_if_false
其中,condition是一个条件表达式,如果它的值为真(即非零、非空、非None等),则返回value_if_true;否则返回value_if_false。
x = 1 if 1 < 3 else 3
列表生成式
[expression for item in iterable if condition]
expression: 用于生成新列表中每个元素的表达式。
item: 可迭代对象中的每个元素。
iterable: 可迭代对象,如列表、字符串、元组等。
condition: 可选的条件,用于过滤元素。
data = [i for i in range(5)]
data = [i for i in range(5) if i < 3]
字典生成式
在Python中,字典生成式(Dictionary Comprehension)是一种以简洁的方式创建字典的方法。它类似于列表生成式,但是用于创建字典。
字典生成式的语法形式如下:
{key_expression: value_expression for item in iterable}
其中,key_expression
和value_expression
是根据item
从可迭代对象中生成键值对的表达式。可以通过在key_expression
和value_expression
中使用item
来访问可迭代对象中的每个元素。
下面是一个使用字典生成式创建字典的示例:
numbers = [1, 2, 3, 4, 5]
# 使用字典生成式创建字典,将每个数字的平方作为键,数字本身作为值
squared_dict = {num: num**2 for num in numbers}
print(squared_dict)
在上述示例中,我们定义了一个列表numbers
,然后使用字典生成式将列表中的每个数字的平方作为键,数字本身作为值,创建了一个新的字典square_dict
。最后,我们将字典打印出来。
输出结果为:
{1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
通过使用字典生成式,我们可以以一行代码的方式根据可迭代对象创建字典。
需要注意的是,字典生成式还可以包含条件语句来过滤要添加到字典中的元素。例如,可以使用条件语句来只选择满足特定条件的元素。
nameList = ['小满', '大乔', '小乔']
heroDict = {k: None for k in nameList}
print(heroDict) # {'小满': None, '大乔': None, '小乔': None}
data = [('小满', 3), ('大乔', 4), ('小乔', 5)]
heroDict = {name: age for name, age in data}
print(heroDict) # {'小满': 3, '大乔': 4, '小乔': 5}
生成器表达式
在Python中,生成器表达式(Generator Expression)是一种创建生成器(Generator)的简洁方式。与列表生成式和字典生成式类似,生成器表达式允许我们使用简洁的语法来生成一个可迭代的对象。
生成器表达式的语法形式如下:
(expression for item in iterable)
其中,expression
是根据item
从可迭代对象中生成值的表达式。可以通过在expression
中使用item
来访问可迭代对象中的每个元素。
下面是一个使用生成器表达式创建生成器的示例:
numbers = [1, 2, 3, 4, 5]
# 使用生成器表达式创建生成器,生成每个数字的平方
squared_generator = (num**2 for num in numbers)
# 遍历生成器并打印每个生成的值
for value in squared_generator:
print(value)
在上述示例中,我们定义了一个列表numbers
,然后使用生成器表达式生成每个数字的平方,并创建了一个生成器square_generator
。然后,我们使用for
循环遍历生成器,并打印每个生成的值。
输出结果为:
1
4
9
16
25
通过使用生成器表达式,我们可以以一行代码的方式创建一个生成器对象。与列表生成式不同的是,生成器表达式是惰性求值的,只在需要时才生成值,这对于处理大量数据或无限序列非常有用。
numbers = (pow(index, 2) for index in range(1, 10))
for number in numbers:
print(number)
1
4
9
16
25
36
49
64
81
numbers = (pow(index, 2) for index in range(1, 10))
while True:
try:
print(next(numbers))
except StopIteration as e:
break
print("已结束!")
1
4
9
16
25
36
49
64
81
已结束!
集合生成式
names = ['egon', 'alex', 'lxx', 'lxx']
set1 = {name for name in names}
拉锁函数zip
zip()函数是Python内置的一个函数,用于将多个可迭代对象(例如列表、元组等)按照索引位置一一对应地打包成元组的形式。它返回一个迭代器,可以用于遍历打包后的元组。
name_list = ["小满", "大乔", "小乔", "王昭君"]
age_list = [3, 4 ,5, 6]
zipped = list(zip(name_list, age_list))
print(zipped) # [('小满', 3), ('大乔', 4), ('小乔', 5), ('王昭君', 6)]
name_list = ["小满", "大乔", "小乔", "王昭君"]
age_list = [3, 4 ,5, 6]
hero_dict = dict(zip(name_list, age_list))
print(hero_dict) # {'小满': 3, '大乔': 4, '小乔': 5, '王昭君': 6}
统计文件中有多少个字符
with open('结果.txt', mode='rt', encoding='utf-8') as f:
# 方式1:
total = 0
for line in f:
total += len(line)
print(total)
# 方式2:
res = sum([len(line)for line in f])
print(res)
# 方式3:
res = sum((len(line) for line in f))
print(res)
# 可以简写
res = sum(len(line) for line in f)
print(res)
标签:各种,生成式,生成器,print,expression,表达式,字典
From: https://www.cnblogs.com/ccsvip/p/17879140.html