Python学习记录

基础语法

基础语法

输出:print()

输入:a = input() 给a赋值 ()内可以输入提示信息 比如 “请输入你的姓名”

数据类型

  • 整数:可以处理任意大小的整数
  • 浮点数:
  • 字符串:用单引号或双引号括起来的任意文本
  • 布尔值:true false and or not 与或非运算 常用于条件判断
  • None:空值 不能理解为0 是一个特殊的空值
  • 变量:可以是任意数据类型

字符编码

list:python内置的数据类型;有序集合,数据类型可以不同、可以包含list、可以随时添加和删除其中的数据。

  • len():获得元素的个数
  • 用索引来访问其中的元素,从0开始 直接获取最后一个元素可以用-1、
  • append():追加元素到末尾
  • insert:把元素插入到指定位置
  • pop:删除末尾元素
  • pop(i):删除指定
  • array[i] = ‘’:直接替换索引为i的元素
classmates = ['aa','bb','cc']
print(classmates)
print(len(classmates))
print(classmates[0])
classmates.append('dd')
print(classmates)
classmates.insert(1,'11')
print(classmates)
print(classmates.pop())
print(classmates)
print(classmates.pop(1))
print(classmates)
classmates[1] = 'hh'
print(classmates)

# 结果
['aa', 'bb', 'cc']
3
aa
['aa', 'bb', 'cc', 'dd']
['aa', '11', 'bb', 'cc', 'dd']
dd
['aa', '11', 'bb', 'cc']
11
['aa', 'bb', 'cc']
['aa', 'hh', 'cc']

tuple

元组:有序列表、一旦初始化不能修改,如果元组中包含list,则list的数据是可以修改的

使用元组的意义:比list更加安全

条件判断

a = 10
if a == 9:
	print('aa')
elif a == 10:
	print('bb')
else:
	print('cc')

int()函数可以将str转换成int

range():生成一个整数序列

循环

names = ['aa','bb','cc']
for name in names:
  print(name)

sum = 0
for x in [1,2,3,4,5,6,7,8,9,10]:
  sum = sum + x
print(sum)

break提前退出循环

dist

字典:使用键值存储,查找速度极快

d = {'aa':11,'bb':22,'cc':33}
print(d['aa'])
d.get('aa')
d.pop('aa')

set

是一组key的集合,不存储value、key不能重复、创建一个set、需要提供一个list作为输入集合
重复元素在set中自动被过滤、add()添加元素到set中,

函数

函数

定义函数

def myfuncation(x):
	...函数体
# 空函数
def nop():
    pass  #pass语句什么都不做,当作占位符,让程序能够运行起来
# 类型检测 在函数体执行前对传入的参数进行检查  
if not isinstance(x, (int, float)):
    raise TypeError('bad operand type')
# 可以返回多个值

# 在定义函数时,需要确定函数名和参数个数
# 如果有必要,可以先对参数的数据类型做检查
# 函数内部可以用retur随时返回函数结果
# 函数执行完毕也没有return语句  自动return none
# 函数可以同时返回多个值 

高级特性

高级特性

切片

slice:取几个元素

names = ['aa','bb','cc','dd','ff']
names[0:3]

#前10个数,每两个取一个
L[:10:2]
#所有数,每5个取一个
L[::5]
#元组的切片还是元组
#字符串也可以切片
'ABCDEFG'[:3]
'ABC'

迭代

提供for循环遍历列表或元组 for in
默认情况下字典迭代的是key,如果要迭代value的话,for k,v in d.items()
字符串也可以迭代
判断对象是不是可迭代对象:

from collections.abc import Iterable
isinstance('abc',Iterable)  # str是否可迭代

python内置的enumerate函数可以把list变成索引-元素对,这样就可以在for循环中同时迭代索引和元素本身

for i,value in enumerate(['A','B','C']):
	print(i,value)

列表生成式

用来创建list的生成式
比如:要生成list[1,2,3,4,5,6,7,8,9,10]可以用list(range(1,11)):

L = []
for x in range(1,11):
	L.append(x*x)
# 结果
[1,4,9,16,....]

# 使用列表生成式
[x * x for x in range(1, 11)]
# 还可以加if判断
[x * x for x in range(1, 11) if x % 2 == 0]
# 还可以使用两层循环
[m + n for m in 'ABC' for n in 'XYZ']

生成器

列表容量有限,生成器可以一边循环一边计算,创建生成器有很多种方法,第一种方法:把列表生成式的[]改成(),

//list
L = [x * x for x in range(10)]
L   [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
//generator
g = (x * x for x in range(10))
g	<generator object <genexpr> at 0x1022ef630>

//打印generator
next(g)		0
next(g)		1

//一般使用迭代的方式输出generator
g = (x * x for x in range(10))
for n in g:
    print(n)
    
# 结果
0
1
4
9
...
81

调用generator函数会创建一个generator对象,多次调用generator函数会创建多个相互独立的generator

迭代器

可以直接作用于for循环的数据类型:

  • 集合:list、tuple、dict、set、str等
  • generator:生成器

可以直接作用于for循环的对象统称为可迭代对象 Iterable

可以作用于next()函数的对象都是Iterator类型

可以使用isinstance()判断一个对象是否是Iterable对象

python的for循环本质上就是通过不断调用next()函数实现的

函数式编程

函数式编程

map

接收两个参数,一个是函数、一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回

example:
有一个函数,f(x) = x*x,要把这个函数作用在一个list上,就可以用map()实现如下

def f(x):
   return x * x
...
r = map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9])
list(r)
// 结果
[1, 4, 9, 16, 25, 36, 49, 64, 81]

reduce

把一个函数作用在一个序列上,这个函数必须接收两个参数,reduce把结果和序列的下一个元素做累积计算。

example:
对一个序列求和

from functools import reduce
def add(x, y):
	return x + y
reduce(add, [1, 3, 5, 7, 9])
# 结果
25

filter

过滤器:用于过滤序列,和map不同的是,filter是把传入的函数依次作用于每个元素,然后根据返回值是true函数false决定保留还是丢弃该元素

example:

# 在一个list中,删除偶数,只保留奇数:
def is_odd(n):
    return n % 2 == 1

list(filter(is_odd, [1, 2, 4, 5, 6, 9, 10, 15]))
# 结果: [1, 5, 9, 15]

# 把一个序列中的空字符串删掉,可以这么写:
def not_empty(s):
    return s and s.strip()

list(filter(not_empty, ['A', '', 'B', None, 'C', '  ']))
# 结果: ['A', 'B', 'C']

filter函数返回的是一个Iterator,也就是一个惰性序列。所以要强迫filter完成计算结果,需要用list函数获得所有结果并返回list

sorted

排序
排序的核心是什么?? 比较两个元素的大小

sorted([36, 5, -12, 9, -21])
# 结果
[-21, -12, 5, 9, 36]

可以接收一个key函数来实现自定义的排序,比如按照绝对值大小排序:

sorted([36, 5, -12, 9, -21], key=abs)
# 结果
[5, 9, -12, -21, 36]

key指定的函数将作用于list的每一个元素上,并根据key函数返回的结果进行排序

函数返回值

高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回。

def lazy_sum(*args):
    def sum():
        ax = 0
        for n in args:
            ax = ax + n
        return ax
    return sum

匿名函数

不需要显示地定义函数,直接传入匿名函数更加方便
lambda x:x * x
且匿名函数只能有一个表达式,不用写return,返回值就是该表达式的结果

装饰器

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值