首页 > 其他分享 >三元表达式和各种生成式

三元表达式和各种生成式

时间:2022-10-16 19:33:54浏览次数:43  
标签:name res 生成式 list print 三元 表达式

目录

一、三元表达式

什么是三元表本质?

1、是对简单的代码进行缩写,简单的来说就是偷懒的写法减少代码行数
2、三元表达式只适合较为简洁的条件判定,较为复杂的判定建议不要用这种方式写代码,因为比较让他人难以理解。

3、三元表达式不建议嵌套使用,因为三元表达式是为了简化代码,嵌套后反而看着更复杂了。

三元表达式语法结构

if条件判定为真时的结果+if 判定条件 else+if条件判定为假时的结果
如果if后面的条件成立,则使用if前面真的时候值
如果if后面的条件不成立,则使用else后面假的值

# 简化步骤1:代码简单并且只有一行 那么可以直接在冒号后面编写
name = 'jason'
# if name == 'jason':print('老师')
# else:print('学生')
# 三元表达式
res = '老师' if name == 'jason' else '学生'
print(res)
"""
数据值1 if 条件 else 数据值2
条件成立则使用数据值1 条件不成立则使用数据值2

当结果是二选一的情况下 使用三元表达式较为简便
并且不推荐多个三元表达式嵌套
"""

二、各种生成式

生成式总共有三种:列表生成式、字典生成式、集合生成式。元组类型没有生成式,元组类型叫生成器,会生成一个类似工程的东西,不会直接生成列表。

生成式的作用:用于对数据类型中的所有数据值进行进行相同操作

表现形式:

new_list = [name + "_NB" for name in name_list]

左边是变量名绑定修改后的结果,右边最外层的是最后生成数据的类型,通常来说我们都是用的什么生成器就在外层使用什么类型对应的外层符号。内层for循环左边的代码是规定进行的操作,for循环的作用就是一个个取值进行修改,因为外层套着框,所以修改后的值就依次保存在列表中了,如果是字典和集合的话因为本身的无序性,输出结果的时候可能会没有顺序。

列表生成式

# name_list = ['jason', 'kevin', 'oscar', 'tony', 'jerry']
# 给列表中所有人名的后面加上_NB的后缀
# for循环
# new_list = []
# for name in name_list:
#     data = f'{name}_NB'
#     new_list.append(data)
# print(new_list)
# 列表生成式
# 先看for循环 每次for循环之后再看for关键字前面的操作
# new_list = [name + "_NB" for name in name_list]
# print(new_list)
# 复杂情况
# new_list = [name + "_NB" for name in name_list if name == 'jason']
# print(new_list)
# new_list = ['大佬' if name == 'jason' else '小赤佬' for name in name_list if name != 'jack']
# print(new_list)



# 集合生成式
# res = {i for i in 'hello'}
# print(res)
# 元组生成式>>>:没有元组生成式 下列的结果是生成器(后面讲)
# res = (i+'SB' for i in 'hello')
# print(res)
# for i in res:
#     print(i)

字典生成式

# 字典生成式
# s1 = 'hello world'
# for i,j in enumerate(s1,start=100):
#     print(i,j)
# d1 = {i: j for i, j in enumerate('hello')}
# print(d1)

注:这里的i和j相当于进行了解压赋值操作,如果这里只有一个变量名,就等于绑定了一对键值对,这时候输出的值就键值对,两个变量的时候就是分别输出键和值。
enumerate方法是给输出的值输出一个序号,可以自己设置起点的值。

集合生成式

# 集合生成式
# res = {i for i in 'hello'}
# print(res)

没什么特点,就是输出结果的时候是无序的

元组生成器(稍微介绍一下区别)

形式跟生成式差不多但是功能不一样

# 元组生成式>>>:没有元组生成式 下列的结果是生成器(后面讲)
# res = (i+'SB' for i in 'hello')
# print(res)
# for i in res:
#     print(i)

生成的结果如果跟生成式一样输出的话,只能看到函数名称,如果使用for循环打印生成的结果的话就可以看到生成的一个个值


标签:name,res,生成式,list,print,三元,表达式
From: https://www.cnblogs.com/zhihuanzzh/p/16796866.html

相关文章

  • 7.lambda表达式
    一、说明Lambda表达式是什么Lambda表达式也称为闭包,是Java8发布的新特性Lambda允许把函数作为一个方法的参数(函数作为参数传递进方法中)为什么要使用Lambda表达......
  • 栈的链式储存结构及应用:四则运算表达式求值(中缀表达式转化为后缀表达式并求值)
    遇到的问题一:SegmentationFault(存储器区块错误)遇到的问题二:函数内变量一经声明其地址已固定,导致同一结点反复入栈遇到的问题三:对字符串如何标记和提取单个数值/*//////......
  • 正则表达式-逻辑”非“处理(记录)
    正则表达式-逻辑”非“处理(记录)“非”是正则表达式中最难处理的逻辑关系。因为没有直接对应的结构,“非”的处理比较吃力。最简单的“非”,意思是此处不能出现某个字符......
  • EL表达式
     1.EL表达式<%@pagecontentType="text/html;charset=UTF-8"language="java"%><html><head><title>EL</title></head><body><%pageContext.setAttri......
  • 正则表达式
    格式正则表达式以/开始,以/结束中间包含字符串的匹配规则。/a/匹配字符串中的第一个a字符,/abc/表示匹配连续的abc字符。常用符号[]表示当前字符位置匹配的......
  • C语言开发环境使用和数据类型,运算符,表达式
    task1.c1#include<stdio.h>2intmain()3{4printf("O O\n");5printf("<H><H>\n");6printf("IIII\n");7return0;8}......
  • 实验一 C 语言开发环境使用和数据类型,运算符,表达式
      #include<stdio.h>#include<stdlib.h>intmain(){printf("OO\n");printf("<H><H>\n");printf("II II\n");sys......
  • Python 正则表达式匹配数字及字符串中的纯数字
    Python正则表达式匹配数字电话号码:\d{3}-\d{8}|\d{4}-\d{7} QQ号:[1-9][0-9]{4,}中国邮政编码:[1-9]\d{5}(?!\d)身份证:\d{15}|\d{18}ip地址:\d+\.\d+\.\d+\.\d+ [1-9]......
  • 正则表达式从入门到分析
    简单模糊查询hi可以匹配hi,HI,Hi,hI这四种情况中的任意一种。包含hi这两个连续的字符,比如him,history,high等等精确地查找hi这个单词\bhi\b单词hi,然后是任意个任意字......
  • delphi 正则表达式的使用方法
    本文写于2022-10-14,D版本10.3.3引用单元:uses System.RegularExpressions1、TRegEx.Match方法Match()方法总是获取满足条件的第一个匹配,而不关心满足条件的匹配有多......