python入门知识总结
提示:
前言
python的基础由潜入深的理解,具体详解内容来自网站
https://www.liaoxuefeng.com/wiki/1016959663602400/1017092876846880
一、python的tuple和list
list和tuple的最大区别是:list是可变类型,tuple是不可变类型
# list和tuple都有切片操作,
L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack']
# 取前三个元素
L[0:3]
L[:3]
# 取最后一个
L[-1]
# 前四个, 每两个取一个
L[0:4:2]
# 后三个元素
L[-3:]
2. 迭代
在python中迭代使用关键字为 for 循环,其内部封装了next()和iter() 方法
# 只要是可迭代对象,都可以用for循环进行迭代, 数据类型是 tuple还是list
for i in 'anc':
print(i)
for i in [1,2,3,4]:
print(i)
# 判断一个对象是否可迭代使用 collections
from collections import Iterable
isinstance('abc', Iterable) # True
isinstance([a, b], Iterable) # True
isinstance(12, Iterable) # False
3.列表生成式
- 简单的介绍几种常见的列表生成式
# 一般的列表生成式
「x*x for x in range(10)]
#带有 if的判断语局的列表生成式
「x for x in range(100) if x%2==0]
# if else 的判断语句,因为列表推到式的for循环后一定要有一个结果,所以列表推到式的if else语句放在for前面
「 x*x if x%2==0 else None for x in range(100)]
# 多层嵌套的for循环, 生成的是一个 n*m的数组
「 m +n for m in 'abc' for n in 'xyz']
生成器
- 生成器的理解:对于元素列表的数据可以可以不必完整的创建,而是根据边循环边计算的方式展示出需要的数据,可以大大节省内存空间
- 创建一个generator, 最简单的方式是 把列表推到式的 「」变为 ()
g = (m for i in range(100)) # g就是生成器 <generator object>
# 可以通过next()打印要打印的数据
next(g)
next(g) # 到最后会抛出 StopIteration 的异常,所以我们对生成器一般使用for循环进行操作
for i in g:
print(i)
- yield 关键字的生成器
# 对于一个函数,如果有yield关键字,就是一个生成器
def func()
print('stup1')
yield 1
print('stup2')
yield 2
a = func()
next(a)
迭代器
- 概念: 可以被 next()函数调用并返回下一个值的对象的叫称为迭代器 Iterator, 而可以被for循环迭代的,不能操作next() 的统称为可迭代 Iterable
# 可以通过 collection.Iteration 判断是否是迭代器
from collection import Iteration
isinstance([], Iteration) # False
isinstance((), Iteration) # False
isinstance((i in for rnage(10), Iteration) # True
# 判断是否是可迭代 Iterable
from collection import Iterable
isinstance([], Iterable) # True
isinstance('abc', Iterable) # True
isinstance(123, Iterable) # False
高阶函数
- python常见内置的高阶函数有 map(), sorted(), filter(), lambad表达式
map 内置函数
# map() 可以接收多个参数, 一个是函数名f,其他的是可迭代对象, 返回的结果是一个迭代器Iterator
def func(x):
return x*x
si = map(func, (1,2,3)
print(next(si)) # 1
print(next(si)) # 4
def func2(x,y):
return x*y
si2 = map(func2, (1,3,5), (2,4,6))
print(next(si2)) # 2
print(next(si2)) # 12
print(next(si2)) # 30
filter 内置函数
# filter() 第一个参数也是接收函数,后面接收的是可迭代对象, 把返回True的值返回, 返回的也是一个迭代器Iterator
def not_empty(s):
return s and s.strip()
list(filter(not_empty, ['A', '', 'B', None, 'C', ' ']))
# 结果: ['A', 'B', 'C']
sorted 内置函数
# sorted()可以比较两个值的大小,如果是比较非数据,则没有意义,我们可以通过函数进行比较出来
sorted([36, 5, -12, 9, -21])
# 按绝对值进行比较
sorted([36, 5, -12, 9, -21], key=abs) # [5, 9, -12, -21, 36]
sorted(['bob', 'about', 'Zoo', 'Credit'], key=str.lower) #'about', 'bob', 'Credit', 'Zoo']
# sortd的key也可以传入函数,使用函数的结果来进行排序
# 按成绩高低来排序
L = [('Bob', 75), ('Adam', 92), ('Bart', 66), ('Lisa', 88)]
def by_score(t)
return t[1]
sort(L, by_score) # [('Bart', 66), ('Bob', 75), ('Lisa', 88), ('Adam', 92)]