三元表达式、列表解析、生成器

2019-05-23  本文已影响0人  single仔

本人只是初学阶段,在学习过程中的一些笔记。想借此平台也分享给刚刚学习的朋友,如有错的地方欢迎各位大神与高手指点。

三元表达式

例一:比较大小

x=3

y=2

res='aaaaa' if x > y else 'bbbbbbb' 

print(res)


例二:在函数中的应用

def max2(x, y):

    return x if x > y else y

print(max2(2, 3))


列表解析器:(很占用资源)

例一:把某个文件夹中log后缀结尾的文件放到l2列表中

import os

l1 = os.listdir('/var/log')

l2 = [i for i in l1 if i.endswith('.log')]

print(l2)


例二:把l1列表中的每个元素都和l2中的元素配套一次

l1 = ["x", "y", "z"]

l2 = [1, 2, 3]

l3 = [(i, j) for i in l1 for j in l2]

print(l3)


例三:把l1列表中的每个元素都和l2中的元素配套一次,但排除l2中的1

l1 = ["x", "y", "z"]

l2 = [1, 2, 3]

l3 = [(i, j) for i in l1 for j in l2 if j != 1]

print(l3)


例子四:列表解析,将l1列表中的每个数值的平方值输入到l2中

l1 = [1, 3, 5, 7, 9]

l2 = [i ** 2 for i in l1]

print(l2)


例子五:生成一个新列表,里面的值是1到10的平方除以2的结果

for j in [i ** 2 for i in range(1, 11)]:

    print(j/2)

生成一个新列表,里面的值是1到10的偶数平方除以2的结果。如果是奇数的话即用!=0

for j in [i ** 2 for i in range(1, 11) if i % 2 == 0]:

    print(j / 2)


生成器:(每次只获取一个元素)

例一:生成一个新的生成器,里面的值是1到10的平方除以2的结果

g1 = (i ** 2 for i in range(1, 11))

print(g1.__next__())  #每次只取一个元素,占用内存少

或者

g1 = (i ** 2 for i in range(1, 11))

for i in g1:

 print(i)#每次只取一个元素,占用内存少

或者

g1 = (i ** 2 for i in range(1, 11))

print(list(g1)) # 直接在一个列表中列出所有元素,缺点是占用内存多


例二:生成一个新生成器,里面的值是1到10的平方除以2的结果

for j in (i ** 2 for i in range(1, 11)):

    print(j / 2)


例三:当y小于x时,循环输出y的值

def f1(x): # 定义一个函数

 y = 0 # y由0开始

 while y <= x:# 循环,当y小于或等于x的值时就停止循环

 yield y # 当循环走到这里时会暂停,输出结果

 y += 1 # 在原来的值上+1再继续循环

for i in f1(10):

 print(i)


例四:输出1~20的平方值

def mun(n): # 定义函数

 i = 1 # 给i赋值

 while i <= n: # 循环,当i小于或等于n的值时就停止循环

 yield i ** 2 # 当循环走到这里时会暂停,输出结果

 i += 1 # 在原来的值上+1再继续循环

l2 = []

for i in mun(20): # 定义函数的值为20

 print(i) # 可以直接输出结果

 l2.append(i) # 也可以将i的所有结果先插入l2列表中

print(l2) # 然后输出l2列表,这样看起来比较好

上一篇下一篇

猜你喜欢

热点阅读