Python--推导式、模块、面向对象

推导式和模块

一、推导式

列表推导式、字典推导式、集合推导式

(一)列表推导式

利用其他列表创建新列表
基本格式:
变量名 = [表达式 for 变量 in 列表]
变量名 = [表达式 for 变量 in 列表 if 条件]

执行流程:
遍历出列表中的内容给变量,表达式根据变量值进行逻辑运算。
或者遍历出列表中的内容给变量,然后进行判断,符合的值再给表达式。

a = [1, 2, 3, 4, 5, 6]
b = [i * i for i in a]
print(b)
a = [1, 2, 3, 4, 5, 6]
def qiupf(x):
    return x * x
b = [qiupf(i) for i in a]
print(b)
a = [1, 2, 3, 4, 5, 6]
b = [i for i in a if i % 2 == 1]
print(b)
a = [1, 2, 3, 4, 5, 6]
b = [i**2 for i in a if i%2 == 0 if i > 2]
print(b)
b = [i**2 for i in a if i%2 == 0 and i > 2]
print(b)

b = [i for j in a for i in j]
print(b)
a = [[3*i+j+1 for j in range(3)]for i in range(3)]
print(a)
a = [lambda x:x*i for i in range(3)]
print(a[0](2))
print(a[1](2))
print(a[2](2))

(二)字典推导式

与列表推导式的区别就是,产生的是字典
字典推导式格式:
变量名={…}

a = {'a':'b', 1: 2}
b = {v:k for k,v in a.items()}
print(b)
a = {k:v for k,v in zip('abc', '123')}
print(a)
a = {'a': 1, 'A': 3, 'b': 4, 'B': 9, 'c': 10}
print(a.get('c', 9)) # 字典里有的取有的
print(a.get('C', 0)) # 没有的取默认的
a = {'a': 1, 'A': 3, 'b': 4, 'B': 9, 'c': 10, 'd':99}
x = {'a', 'A', 'B', 'b', 'c'}
b = {k.lower():a.get(k.lower(),0)+a.get(k.upper(),0)for k in a.keys() if k in x}
print(b) # {'a': 4, 'b': 13, 'c': 10}

(三)集合推导式

跟列表推导式非常相似,唯一区别就是用{}代替[]

模块

(一)模块的导入方式

import 模块名
import 模块名 as 别名
import 模块名1, 模块名2, … --------一行导入多个模块
from … import …
from … import … as 别名
from … import 功能1, 功能2…
from … import * --------- 导入所有

(二)常用模块

1、产生随机小数

(1)random()

产生0-1之间的小数

(2)uniform()

产生指定范围内的随机小数

import random
print(random.uniform(2, 3))

2、产生随机整数

(1)randint(a,b)

产生a,b范围内的整数,包含头和尾

a = [random.randint(1, 10) for i in range(10)]
print(a)
(2)randrange(start, stop, step)

产生范围内的整数,包含开头不包含结尾
step表示步长

a = random.randrange(1, 13, 2)
print(a)

(3)随机选择一个数据

choice()

随机返回序列中的一个数据

a = [10, 20, 30, 40]
b = random.choice(a)
print(b)

3、打乱

shuffle()

打乱列表顺序

a = [10, 20, 30, 40]
random.shuffle(a)
print(a)

练习生成随机验证码

def verify_code():
    code=''
    for i in range(4):
        sz = random.randint(0, 9)
        xzm = chr(random.randint(97, 122))
        dzm = chr(random.randint(65,90))
        c = random.choice([sz, xzm, dzm])
        code = code + str(c)
    return code
print(verify_code())

面向对象

一、类和对象

类–描述一个事物的行为和特征
对象–是由类创造出来的具体实体,可以直接使用的

二、类和对象之间的关系

先有类后有对象
类只有一个,对象可以有多个

三、类的设计

设计一个类,需要满足以下三个要素:
类名:大驼峰命名法
属性:描述这类事物的特性
方法:描述这类食物的具体行为

class Student():
    name=''
    def study(self):
        print(self.name, '学习')
    def eat(self):
        print(self.name, '吃饭')
zhang = Student()
zhang.name = 'xx'
zhang.study()
zhang.eat()
#在别的方法中也可以对属性初始化
class Student():
    def __init__(self, name):
        self.name = name
    def hehe(self,age):
        self.age = age
    def haha(self):
        print(self.name,self.age)
zs = Student('张三')
zs.hehe(19)
zs.haha()
# 在类外增加属性
class Teacher():
    def __init__(self, name):
        self.name = name
    def show(self):
        print(self.name, self.age)
zs = Teacher('张三')
zs.age = 29
zs.show()
class Student():
    def __init__(self, name, age, sex):
        self.name = name
        self.age = age
        self.sex = sex
    def show(self):
        print(self.name,self.age,self.sex)
    def setage(self):
        self.age=19  # 在原age上进行修改
zs = Student('张三', 29, '男')
zs.show()
zs.setage()
zs.show()
class Dog():
    def __init__(self, color, age):
        self.color = color
        self.age = age
    def __str__(self):  # 魔术方法
        print('hhhhhhhhhhh')
        return '颜色%s 年龄%d'%(self.color,self.age)
d = Dog('红色', 18)
# print(d, type(d), id(d)) # 启用了__str__,但d还是一个对象

x = str(d) # str方法触发了__str__方法
print(x, type(x))

b = d
print(b, type(b), id(b))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值