首页 > 其他分享 >各种生成式

各种生成式

时间:2023-12-06 11:48:25浏览次数:32  
标签:各种 生成式 生成器 print expression 表达式 字典

三元表达式

在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_expressionvalue_expression是根据item从可迭代对象中生成键值对的表达式。可以通过在key_expressionvalue_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

相关文章

  • Qt/C++视频监控拉流显示/各种rtsp/rtmp/http视频流/摄像头采集/视频监控回放/录像存储
    一、前言本视频播放组件陆陆续续写了6年多,一直在持续更新迭代,视频监控行业客户端软件开发首要需求就是拉流显示,比如给定一个rtsp视频流地址,你需要在软件上显示实时画面,其次就是录像保存,再次就是一些周边的处理比如贴OSD,做图片分析等。拉流显示是第一步,如果有跨平台的需求,个人推荐......
  • 三元表达式、列表、字典生成式和匿名函数
    一、三元表达式1、引入比价两个数的大小,正常函数写法defmy_max(a,b):ifa>b:returnaelse:returnbmy_max(1,2)2、三元表达式写法defmy_max(a,b):returnaifa>belsebres=my_max(1,2)print(res)3、语法结构:条件成立......
  • MongoDB 各种复杂查询彻底弄明白
    查询语法db.collection.find(query,projection)query :可选,使用查询操作符指定查询条件projection :可选,使用投影操作符指定返回的键。查询时返回文档中所有键值,只需省略该参数即可(默认省略)。querymongoDB的query就好比MySQL中where后的内容。我们知道where后可以跟很多条件语句......
  • 乘风破浪,遇见生成式人工智能(Generative AI)之初学者课程,第一章: 生成式人工智能和LLM
    课程资源https://github.com/microsoft/generative-ai-for-beginners课程学习环境设置Fork课程仓库到自己的账号https://github.com/microsoft/generative-ai-for-beginners/fork点击'CreateFork'按钮即可。准备GitHubCodespaces为了避免运行代码时出现任何依赖性......
  • SAP ABAP 各种增强技术(Enhancement)概述 - 所谓第一代,第二代,第三代增强技术的出处试
    本文回答笔者这篇教程:如何通过增强(Enhancement)的方式给SAPABAP标准程序增添新功能评论区的读者留言:这个和第一二三四代以及badi增强有什么联系呢?笔者从2007年一月就在SAP中国使用ABAP进行SAP产品开发了,说实话SAP内部不会把ABAP各种增强技术简单得冠之以第一......
  • vim的各种快捷键
    一、准备一份用于练习的文件我这里随便选了个python文件,作为test.py#!/bin/bashflag1=0#确认用户名是否被注册过的标识user_table="user_info"db_name="your_database_name"db_host="your_database_host"db_user="your_database_user"db_password="your_dat......
  • [good]c语言中各种类型
    #include<stdio.h>#include<stdlib.h>#include<string.h>#include<stdarg.h>#include<assert.h>#include<math.h>#include<time.h>#include<limits.h>#include<float.h>#include<ctype.h>#i......
  • 各种数据库拿到某表的字段和备注信息
    Oracle表字段和备注信息获取selecta.OWNERastable_schema,a.TABLE_NAMEastable_name,d.COMMENTSastale_comments,a.COLUMN_NAMEascolumn_name,a.COLUMN_IDascolumn_id,c.COMMENTSascol_comments,a.DATA_TYPEasdata_type,a......
  • mysql 统计 一行数据多个列 中各种值的 数量
    表数据 统计每个name的指标中红/黄/绿/灰灯数量.  分组使用sum()函数 selectname,zhibiao1as'指标1',zhibiao2as'指标2',zhibiao3as'指标3',sum(casewhenzhibiao1='红'then1else0end)+sum(casewhenzhibiao2='红'......
  • 关于树和图的各种序
    下面讲序的时候用的图括号里是应用的场景,不一定只能应用于相应的场景,但是我个人觉得遇到比较多,而且比较合理下面的例子用这个树然后用这个图欧拉序(树)dfs序指的就是dfs过程中访问到的节点的顺序每个节点访问和离开的时候都会记录一下所以每个节点会在dfs序上出现2......