python装X语法与内置函数

Python 装X语法与内置函数

一、列表推导式

from random import randint
li0 = [i**2 for i in range(10)]
li1 = [randint(0,100) for i in range(10)] # 生成10个随机数
li2 = [i for i in range(10) if i%2==0] # 筛选出偶数

li3 = [i*j for i in range(1,10) for j in range(1,10)] # for循环嵌套,输出99乘法表

print(li0)
print(li1)
print(li2)

print('99乘法表:\n',li3)
[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
[7, 56, 22, 22, 90, 88, 80, 40, 48, 83]
[0, 2, 4, 6, 8]
99乘法表:
 [1, 2, 3, 4, 5, 6, 7, 8, 9, 2, 4, 6, 8, 10, 12, 14, 16, 18, 3, 6, 9, 12, 15, 18, 21, 24, 27, 4, 8, 12, 16, 20, 24, 28, 32, 36, 5, 10, 15, 20, 25, 30, 35, 40, 45, 6, 12, 18, 24, 30, 36, 42, 48, 54, 7, 14, 21, 28, 35, 42, 49, 56, 63, 8, 16, 24, 32, 40, 48, 56, 64, 72, 9, 18, 27, 36, 45, 54, 63, 72, 81]

二、花式赋值

# 同时给多个变量赋值
a , b = 5 , 10 # 其实右边定义了一个元祖,利用了元祖的拆包
print('a=',a)
print('b=',b)

# 交换变量值,利用了元祖的拆包
a, b = b, a
print('a=',a)
print('b=',b)

# 语法验证,右边确实定义了一个元祖
c = 5, 10
print(c, type(c))

# 连续等号赋值
e = f = g =100
print("连续等号赋值:", e,f,g)
a= 5
b= 10
a= 10
b= 5
(5, 10) <class 'tuple'>
连续等号赋值: 100 100 100

三、匿名函数(lambda表达式)

在有些时候,函数只是用一次,则lamba表达式可以派上用场

#基本使用
fun = lambda x : x%3==0
print(fun(9))
True
# 与map函数搭配使用
li = list(filter(lambda x : x%3==0,[i for i in range(50)]))
print(li)
[0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, 45, 48]

四、for else 语句

# 当for 循环中途退出时,不会被else后面的语句块
for i in range(5):
    print(i)
else:
    print("else语句被执行")
0
1
2
3
4
else语句被执行
# 当for 循环中途退出时,不会被else后面的语句块
for i in range(5):
    if i>2 :
        break
    print(i)
else:
    print("else语句被执行")
0
1
2

五、if else 三目判断

a = 1 if 2>3 else 0
print(a)
0

六、几个置函数

enumerate()

# enumerate 使可迭代对象变成枚举对象, 一般用与for循环使用
# enumerate 类的init方法 def __init__(self, iterable, start=0), 传入可迭代对象即可,作为函数调用时返回 enumerate objec
li = "abcdefg"
print(enumerate(li))
for each in enumerate(li):
    print(each)
<enumerate object at 0x7f98ec319a20>
(0, 'a')
(1, 'b')
(2, 'c')
(3, 'd')
(4, 'e')
(5, 'f')
(6, 'g')
for each in enumerate(li,start=1):
    print(each)
(1, 'a')
(2, 'b')
(3, 'c')
(4, 'd')
(5, 'e')
(6, 'f')
(7, 'g')

map()

# map 类的__ini__方法 def __init__(self, func, *iterables) 作为函数使用,传入一个函数,和可迭代对象即可
m = list(map(lambda x : x*3, [ i for i in range(5)]))
print(m)
[0, 3, 6, 9, 12]

filter()

# filter 类的__init__方法,def __init__(self, function_or_None, iterable) 作为函数使用时,传入一个函数和可迭代对象即可
f = list(filter(lambda x : x%2==0, [i for i in range(10)]))
print(f)
[0, 2, 4, 6, 8]
# 一下用法无实际意义,函数返回值中,非零的数,都会被认为是True,所以起不到筛选值的效果,只能筛选调0
f2 = list(filter(lambda x : x*2, [i for i in range(-2,10)]))
print(f2)
[-2, -1, 1, 2, 3, 4, 5, 6, 7, 8, 9]

isinstance()

# 函数原型: isinstance(x, A_tuple) 判断 x 是不是 A_tuple中类的实例对象,或者是不是它的子类d的实例对象
isinstance(1, int)
True
class A():
    attr = "a"

class B(A):
    attr = "b"
    
x = B()
print(isinstance(x, A))
print(isinstance(x, B))
print(isinstance(x, int))
True
True
False

zip()

# zip 对象的__init__方法,def __init__(self, iter1, iter2=None, *some)
# 传入可迭代对象,返回每个元素的组包组成的zip对象, 可转成列表
a = "abcde"
b = [1,2,3,4,5]
print(zip(a,b))
print(list(zip(a,b)))
<zip object at 0x7f98ec2b7a48>
[('a', 1), ('b', 2), ('c', 3), ('d', 4), ('e', 5)]
for each in zip(a, b):
    print(each)
('a', 1)
('b', 2)
('c', 3)
('d', 4)
('e', 5)

hasattr()

# 函数原型 def hasattr(*args, **kwargs)
class A():
    a = 1
    def func():
        print("I am function")
ob = A()
print(hasattr(ob, "a"))
print(hasattr(A,'func'))
True
True

setattr()

# 给对象添加一个属性
# 函数原型:def setattr(x, y, v), 等价于 x.y = v
class Dog():
    name = "旺财"
    
dog = Dog()
setattr(dog,'run',lambda :print("I can run"))
dog.run()
I can run
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值