9月20日三元表达式、列表推导式、字典生成式、zip()压缩方法

三元表达式/列表推导式/字典生成式

以上三个只是让代码变少了,但是根本逻辑没有变化

三元表达式

例子1:

不使用三元表达式:

dog_name='xjj'
if dog_name == 'xjj':
    print('大舔🐕')
else:
    print('溜了')

使用三元表达式

dog_name='xjj'
print('大舔🐕')if dog_name == 'xjj' else print('废物连狗都不如')

例子2(登录):

不使用三元表达式:

zhanghao = input('请输入账号:')
mima=input('请输入密码:')
if zhanghao == 'xjj' and mima == '123':
    print('登录成功')
else:
    print('登录失败')

使用三元表达式:

zhanghao=input('请输入账号:')
mima=input('请输入密码:')
print('登录成功') if zhanghao == 'xjj' and mima == '123' else print('登录失败')

注意:三元表达式只支持双分支结构

列表推导式

例子1:

不使用列表推导式:

list=[0,1,2,3]
list1=[]
for i in range(20):
    list1.append(i)
print(list1)

使用列表推导式:

list1=[i for i in range(20)]
print(list1)

例子2(加运算符的情况):

不使用列表推导式:

list=[0,1,2,3]
list1=[]
for i in range(10):
    list1.append(i**2)#添加的同时也将列表内的元素进行了幂运算,里面的**也可以改成其它的运算符
print(list1)

使用列表推导式:

list1=[i ** 2 for i in range(10)]#这里添加**可以使列表内的元素进行幂运算,里面的**也可以改成其它的运算符
print(list1)

这里不但可以幂运算还可以进行其它的运算

例子3(将字典变成元组保存在列表里的代码):

不使用列表推导式:

dic={'a':1,'b':2}
d=dic.items()
print(d)
#结果为dict_items([('a', 1), ('b', 2)])

使用列表推导式:

dic={'a':1,'b':2}
list=[(k,v) for (k,v) in dic.items()]
print(list)
#结果为[('a', 1), ('b', 2)]

列表推导式可以应用的地方比三元表达式的使用多

zip()压缩方法

zip()函数是Python解释器的内置方法

格式

zip([iterble,…])#压缩方法,Python解释器的内置方法

iterable为迭代器,可以用列表、元组、字典、集合等

主要功能:将其迭代器的多个序列压缩成zip对象或者列表(版本不一样返回元素不一样),但其构成元素都是元组

同时可以使用 _ _ iter _ _ ()和 _ _ next _ _()的方法

z=zip([1,2,3,4,5],[1,2,3,4,5])
print(z.__iter__())
print(z.__next__())

版本的差异:

  • Python3版本返回的是对象,例如:<zip object at 0x7fabbe8777d0>,主要是为了减少内存。通过list(zip(元组)),即可转换为列表
  • Python2版本返回的是列表

例子1(两个列表合并)

list1=[1,2,3]
list2=[4,5,6]
print([x for x in zip(list1,list2)])
#结果为[(1, 4), (2, 5), (3, 6)]

例子2(列表和元组)

list=[1,2,3]
tup=(4,5,6)
print([x for x in zip(list,tup)])
#结果为[(1, 4), (2, 5), (3, 6)]

例子3(字典压缩)

dic1={'a':1,'b':2}
print([x for x in zip(dic1)])
#结果为[('a',), ('b',)] 	

例子3(字符串压缩)

char1='song'
char2='junwan'
print([x for x in zip(char1,char2)])
#结果为[('s', 'j'), ('o', 'u'), ('n', 'n'), ('g', 'w')]

字典生成式

字典生成式相当于将老字典变成新字典

不使用字典生成式:

dic = {'a':1,'b':2}#只能自己内部修改

使用字典生成式:

new_dic={k*2:v**2 for k ,v in dic.items()}#这里面的运算符可以改成其它的运算符,也可以去掉
print(new_dic)
#生成的新字典为{'aa': 1, 'bb': 4}

同时字典生成式一般与zip(拉链函数----->列表里面包了元组)连用

z=zip([1,2,3,4,5],[1,2,3,4,5])#zip()将这些压缩起来下面的代码将其压缩后给字典使用
dic={k:v for k,v in z}
print(dic)
#结果为{1: 1, 2: 2, 3: 3, 4: 4, 5: 5}
posted @ 2023-09-20 14:48  scxlzb  阅读(25)  评论(0)    收藏  举报