序列中元素判断_深拷贝_列表解析式_三元表达式_匿名函数

 

1.列表元素判断

#!/usr/bin/env python
# encoding: utf-8

aa=['苹果 iphone8 手机 苹果 8 iphone8 95新 指纹灵敏 3D touch等所有功能全部正常','无ID无进水 无修屏有质量保证 不议价,拍下付款,当天发货验机','chen','xiaoxiao苹果']
print (aa)
#判断元素是否在列表中
if 'chen' in aa:
    print('chen在序列aa中')
else:
    print('不存在')

#判断序列中_某元素内 是否包含某字符
if '苹果' in aa[0]:
    print('苹果_在aa[0]中存在')
else:
    print('不存在')

#判断整个list中是否包含'某字符串(并打印包含的元素)'
baohan=[]
for i in range(len(aa)):
    #print(aa[i])
    if '苹果' in aa[i]:
        baohan.append(aa[i])
        #print('苹果_在aa['+str(i)+']中存在')
    else:
        print('不存在')
print('aa序列中包含-苹果的元素有',baohan)


#判断序列是否为空
bb=[]
if bb:
    print('bb为空序列')
else:
    print('bb不为空')


#判断序列内元素是否有重复
a=[1,2,3,3,"chen"]
jieguo=([True,False][a==list(set(a))])
print(jieguo)


#打印去重后的list
print(list(set(a)))

 

2.列表浅拷贝和深拷贝

#!/usr/bin/env python
# encoding: utf-8

import copy
'''
浅拷贝(copy):拷贝父对象,不会拷贝对象的内部的子对象。
深拷贝(deepcopy): copy 模块的 deepcopy 方法,完全拷贝了父对象及其子对象。
PS:深拷贝后是两个内存空间,浅拷贝是一个内存空间
'''


a = [1, 2, 3, 4, ['a', 'b']] #原始对象

b = a                       #赋值
c = copy.copy(a)            #对象拷贝,浅拷贝
d = copy.deepcopy(a)        #对象拷贝,深拷贝

#追加5到原始对象
a.append(5)

#修改对象a(追加)
a[4].append('c')            #修改对象a中的['a', 'b']数组对象

print( '原始对象a = ', a )
print( '赋值对象b = ', b )
print( '浅拷贝c = ', c )
print( '深拷贝d = ', d )

 

3.列表解析式

#!/usr/bin/env python
# encoding: utf-8

#生成0到10的列表
a=[i for i in range(10)]

chen=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print([i for i in chen if i > 5 and i < 9])#在chen列表中生成大于5和小于9的列表

#生成小于20的偶数列表
bb=[i for i in range(1,21) if i%2 ==0 ]  #列表生成小于20的偶数

#生成大于列表20个元素切大于10,否则就为55555
cc=[i  if i>10 else '55555' for i in range(1,21)]
print(cc)


#_______________________________________________循环和判断使用__________________________________________

#单层for和单层if
ddd=[2,3,4,5,6]
b_list = [x * x for x in ddd if x % 2 == 0]
print('单层for和单层if',b_list)


#单层for和多层if
a=['' if i==0 else '' if i==3 else '' if i==5 else i  for i in range(10) ]
print('单层for和多层if',a)
### ---------------------等价于-------------------
# for i in range(10):
#     if i==0:
#         print('零')
#     else:
#         if i==3:
#             print('三')
#         else:
#             if i==5:
#                 print('五')
#             else:
#                 print(i)



#多层for循环
d_list = [(x, y) for x in range(5) for y in range(4)]
#d_list = [x  for x in range(5) for y in range(4)]
print('多层for',d_list)
# ---------------等价于---------------
dd_list = []
for x in range(5):
    for y in range(4):
        dd_list.append((x, y))



#多层for循环单层if、else
aa=['117','127','ccc']
chen=['kkk117llld.apk','ddjdijd127p.apk','iddd127ss.apk','ydjdje126.apk']
d_list = [y  for x in aa for y in chen  if x in  y ]
print('多层for和单层if',d_list)

dd = [y  if x in  y  else '条件不存在' for x in aa for y in chen]
print('多层for和单层if else',dd)



#多层for循环多层层if、else
aa=['117','127','ccc']
chen=['kkk117llld.apk','ddjdijd127p.apk','iddd127ss.apk','ydjdje126.apk']
ee = [y  if x=='117' else 'x不等于117' if y == 'ydjdje126.apk' else 'y不等于ydjdje126.apk' for x in aa for y in chen]
print('多层for和多层if  else',ee)

 

4.三元表达式

#!/usr/bin/env python
# encoding: utf-8

#三元表达式:
y = 5
print('y是一个负数' if y < 0 else 'y是一个非负数')

# 三元表达式赋值
y=10
x = -1 if y < 5  else y**2
print(x)

#三元表达式:
y=6
x = -1,2,['chen','wei'] if y < 8 and y>3   else y**2
print(x)

#三元表达式:
y=6
x = -1,2,['chen','wei'] if y < 8 and y>3   else y*10 and 1000
print(x)

 

5.匿名函数

#!/usr/bin/env python
# encoding: utf-8

'''
lambda:为匿名函数
a, b, c: a + b + c分号左边表示接受的参数,分号右边是表达式
'''

######################匿名函数与普通函数的对比#####################
def sum_func(a, b, c):
    return a + b + c

#匿名函数( a, b, c表示接受的参数)
sum_lambda = lambda a, b, c: a + b + c

print(sum_func(1, 100, 10000))
print(sum_lambda(1, 100, 10000))


####################匿名函数######################################
# 无参数
lambda_a = lambda: 100
print(lambda_a())

# 一个参数
lambda_b = lambda num: num * 10
print(lambda_b(5))

# 多个参数
lambda_c = lambda a, b, c, d: a + b + c + d
print(lambda_c(1, 2, 3, 4))

# 表达式分支
lambda_d = lambda x: x if x % 2 == 0 else x + 1
print(lambda_d(6))
print(lambda_d(7))


#####################lambda作为一个参数传递#######################
def sub_func(a, b, func):
    print('a =', a)
    print('b =', b)
    print('a - b =', func(a, b))

sub_func(100, 1, lambda a, b: a - b)


##############lambda函数与Python内置函数配合使用##################
number_a = ['a','b','c','d','e','f']
number_list = [100, 77, 69, 31, 44, 56]
num_sum = list(map(lambda x,y: {str(x): y}, number_a,number_list))
print(num_sum)


######################lambda作为函数返回值########################
def run_func(a, b):
    return lambda c: a + b + c

return_func = run_func(1, 10000)#调用普通函数
print(return_func)#返回函数对象
print(return_func(100))#返回函数值





############################################################lambda的高级函数##########################################################
###____________________________________map函数的使用_____________________________________
'''
map() 会根据提供的函数对指定序列做映射,  Map 会将一个函数映射到一个输入列表的元素上
'''
def square(x) :
    '''计算平方数'''
    return x ** 2
print(list(map(square, [1,2,3,4,5])))    # 计算列表各个元素的平方


###使用lambda和map
items = [1, 2, 3, 4, 5]
squared = list(map(lambda x: x**2, items))
print(squared)



###___________________________________Filter函数的使用___________________________________
'''
filter 过滤列表中的元素,并且返回一个符合要求的元素所构成的列表,符合要求即函数映射到该元素时返回值为True
'''
def square(x) :
    '''过滤函数'''
    return x < 3

number_list=[-5, -4, -3, -2, -1,1,2,3,4,5,6,7,8,9,10]
print(list(filter(square, number_list)))


###使用lambda和filter
number_list=[-5, -4, -3, -2, -1,1,2,3,4,5,6,7,8,9,10]
#接受一个参数x, 表达式为x<0
less_than_zero = filter(lambda x: x < 3, number_list)
print(list(less_than_zero))


###___________________________reduce的使用________________________________________________
'''
当需要对一个列表进行一些计算并返回结果时,Reduce 是个非常有用的函数
'''
from functools import reduce
#接受2个参数x,y, 表达式为x+y
product = reduce( (lambda x, y: x + y), [1, 2, 3, 4, 5])
print(product)

 

 

 

相关连接:

https://blog.csdn.net/PSpiritV/article/details/124323742 ............................................................列表推导式中的多层for嵌套、多层if else嵌套



posted on 2022-08-12 18:41  chen_2987  阅读(83)  评论(0)    收藏  举报

导航