Python学习笔记x

目录

一、数据类型的介绍

1 .1 数据类型

1.1.1 int(整型)

1.1.2 float(浮点型)

1.1.3 bool(布尔型)

1.1.4 String(字符串) 

1.2 运算符

 二、字符串方法

三、类型转化

四、程序的三大流程

4.1 流程控制

4.2 If语句

4.3 while循环

4.4 for 循环

4.5 跳出循环(break and continue)

4.6 pass 占位符

五、数据容器 

5.1 列表

5.1.1 列表创建

5.1.2 列表下标

5.1.3 切片

5.1.4 常用函数 

5.1.5 其他方法

5.1.6 列表推导式 

5.1.7 对象引用、浅拷贝、深拷贝

5.2 元组

5.2.1 创建元组

5.2.2 元组的取值与切片

5.2.3 元组解包

5.3 元组与列表的区别

5.4 集合

5.5 字典 

5.5.1 字典操作 

 5.5.2 常用方法

 6.2 函数参数

6.2.1 基本参数调用

6.2.2  默认参数的使用

6.2.3 不定参数的使用

6.3 返回值

6.4 python闭包机制


一、数据类型的介绍

变量的定义

num1 = 10 #变量
num2 = 9  #变量
result = num1 + num2 #求和
  • 变量就是在代码中为某一数据取得的名称 
  • 如果想要存储多个数据,可以设置多个变量,但是变量不能重复。

程序是用来处理数据,而变量是用来存储数据

1 .1 数据类型

根据数据类型,可以分配不同大小的内存空间。

1.1.1 int(整型)

整数 在python中不受长度限制大小范围

num1 = 100
print(type(num1))

<class 'int'>

  • 注意 uint 不支持前面+负号

long(长整型):可以代表八进制和十六进制

32位与64位区别

print(-2**63 , 2**(63-1)) #由内存管理所实现

print(-2**31 , 2**(31-1))

1.1.2 float(浮点型)

num2 = 99.

 99.0

只要出现“.”就是浮点型 

complex(复数):实部+虚部

1.1.3 bool(布尔型)

bool是int的一个子类,所以True == 1    False ==0 是会返回True

bool(-1)
True

bool(0)
False

总结:True 对 False 错

布尔类型只有两种状态,True和False,数字除了0以外,其余均为True,字符串除了空字符之外都为True,对象除了空对象之外,都为True。 

1.1.4 String(字符串) 

字符串的格式化

  • 使用print函数将信息输出到控制台
  • 如果希望输出文本信息的同时,输出文本数据,就需要用到格式化操作符
  • %被称为格式化操作符,专门用于处理字符串中的格式
  • 包含%的字符串,被称为格式化字符串
  • %和不同的字符连用,不同的类型需要使用不同的格式化 字符 
result1 = "fengxiaobai" + "521"
result2 = 3.1415926
print(result1)
print(result1*2)
print('%7.3f'%result2)
print(result1[-1])
print(result1[0:5])

fengxiaobai521
fengxiaobai521fengxiaobai521
  3.142
1
fengx

  • 字符串是python中最常见的数据类型 常用(' '或者" "或者''' ''')来创建字符串 但是''' '''表示换行
  • 创建字符串只需要为变量分配一个值即可
  • 可以使用+ * 使字符串合并成新的字符串
  • 从右-1编号
  • a[ start:end] 表示从下标为start到end-1

1.2 运算符

 假设变量a为10,b为20

二、字符串方法

mystr = 'hello world'
result1 = mystr.find('p')#1检测he包含在mystr中
result2 = mystr.index('he',0,10)#确定起始位置与结束位置 若找不到直接抛异常
result3 = mystr.count('he')#计数 出现了几次
result4 = mystr.replace('he','He',1)#表示对只找到第一个进行替换
result5 = mystr.split(' ')#分割 spit 分割成三个字符串 放到一个列表里
result6 = mystr.capitalize()#首字母大写 不需要传参
result7 = mystr.title()#每个单词的首字母大写 必须有空格 才能判断这是否是一个单词
result8_1 = mystr.startswith('e')#检测字符串的开头
result8_2 = mystr.endswith('e')#检测字符串的结尾
name1 = 'fengxiaobai'
result9_1 = name1.upper()#大写
name2 = 'FENGXIAOBAI'
result9_2 = name2.lower()#小写
result10_1 = name1.ljust(10)#左对齐
result10_2 = name1.rjust(10)#右对齐
result10_3 = name1.center(10)#居中
name3 = '   fengxiaobai     '
result11_1 = name3.lstrip()#删除左空格
result11_2 = name3.rstrip()#删除右空格
result11_3 = name3.strip()#删除左右空格
name4 = 'fengxiaobai521'
result12_1 = name4.isdigit()#检验是否包含数字
result12_2 = name4.isalnum()#检验是否包含字母
result12_3 = name4.isspace()#检验是否包含空格
print(result1)
print(result2)
print(result3)
print(result4)
print(result5)
print(result6)
print(result7)
print(result8_1)
print(result8_2)
print(result9_1)
print(result9_2)
print(result10_1)
print(result10_2)
print(result10_3)
print(result11_1)
print(result11_2)
print(result11_3)
print(result12_1)
print(result12_2)
print(result12_3)
-1
-1
0
1
Hello world
['hello', 'world']
Hello world
Hello World
False
False
FENGXIAOBAI
fengxiaobai
fengxiaobai
fengxiaobai
fengxiaobai
fengxiaobai     
   fengxiaobai
fengxiaobai
False
True
False

三、类型转化

四、程序的三大流程

4.1 流程控制

是指计算机运算领域的用语,是指在程序运行时个别的指令、运行或是求值的顺序。

  • 顺序——从上向下,顺序执行代码
  • 分支——根据条件判断,决定执行代码的分支
  • 循环——让特定代码重复执行

4.2 If语句

  • 如果条件满足,才能做某件事情
  • 如果条件不满足,就做另外一件事情,或是什么也不做

a=100
if a>90:
    print('A')
else:
    print('B')

If 嵌套 

ticket = 1
knife = 1
if ticket==1:
    print('有票')
    if knife==1:
        print('不能通过安检')
    else:
        print('通过')

有票
不能通过安检 

4.3 while循环

  • 让指定的代码重复执行
  • 让执行的代码按照指定的次数重复执行

while 条件:

        do something

i=0
while i<5:
    i=i+1
    print(i)

1
2
3
4

死循环:忘记在循环内部修改循环的判断条件,导致循环持续执行,程序无法终止!

4.4 for 循环

 for 临时变量 in 序列(可迭代):
        代码内容
name = 'bai'
for i in name:
    print(i)

b
a

 for循环嵌套(组合)

for i in '0123':
    for j in '4567':
        print(i,j)

0 4
0 5
0 6
0 7
1 4
1 5
1 6
1 7
2 4
2 5
2 6
2 7
3 4
3 5
3 6
3 7 

for row in range(1, 10):
    for col in range (1, row+1):
        print("%d * %d = %d" % (col,row,row*col),end='\t')
    print()

1 * 1 = 1    
1 * 2 = 2    2 * 2 = 4    
1 * 3 = 3    2 * 3 = 6    3 * 3 = 9    
1 * 4 = 4    2 * 4 = 8    3 * 4 = 12    4 * 4 = 16    
1 * 5 = 5    2 * 5 = 10    3 * 5 = 15    4 * 5 = 20    5 * 5 = 25    
1 * 6 = 6    2 * 6 = 12    3 * 6 = 18    4 * 6 = 24    5 * 6 = 30    6 * 6 = 36    
1 * 7 = 7    2 * 7 = 14    3 * 7 = 21    4 * 7 = 28    5 * 7 = 35    6 * 7 = 42    7 * 7 = 49    
1 * 8 = 8    2 * 8 = 16    3 * 8 = 24    4 * 8 = 32    5 * 8 = 40    6 * 8 = 48    7 * 8 = 56    8 * 8 = 64    
1 * 9 = 9    2 * 9 = 18    3 * 9 = 27    4 * 9 = 36    5 * 9 = 45    6 * 9 = 54    7 * 9 = 63    8 * 9 = 72    9 * 9 = 81    
 

range 随机生成一个序列 例:for i range (10):        [0,1,2,3,4,5,6,7,8,9]

4.5 跳出循环(break and continue)

  • break 某一条件满足时,跳出循环,不再执行后续重复的代码
  • continue 某一条件满足时,才执行后续重复的代码
  • break continue 只针对当前所在的循环有效
name = 'fengxiaobai'
for i in name:
    if i == 'x':
       break
    print(i)

f
e
n

 如果不想换行 可以写成print(i,end='') ,整个跳出循环

name = 'fengxiaobai'
for i in name:
    if i == 'x':
       continue
    print(i)

f
e
n
g
i
a
o
b
a
i

跳出本次循环,不会终止掉整个程序 

i=0
while i < 5:
    i+=1
    if i==2:
        continue
    print(i)

1
3
4

4.6 pass 占位符

a = 100
if a == 99:
    print('99')
else:
    pass

不会因为这个地方有问题而报错

五、数据容器 

5.1 列表

列表是比较常见的一种数据形式,是一种有序的序列,可以随时添加和删除其中的元素

列表非常适合利用顺序和位置定位某一元素,尤其是当元素的顺序或内容经常发生改变时,与字符串不同,列表是可变的,可以直接对原始列表进行修改、添加元素、删除或覆盖已有元素。

5.1.1 列表创建

  • list 是python中使用最频繁的数据类型,在其他语言中叫做数组
  • 专门用于存储一串信息
  • 列表用[]定义,数组之间使用,分隔
  • 列表中的索引从0开始

names = ['feng','xiao','bai',[1,2,3]]
print(len(names))
print(names[1])
print(names[-1])
print(names[-1][1])#有几层对应的下标就有几层

4
xiao
[1, 2, 3]

注意:索引超出范围会报错

5.1.2 列表下标

可以根据索引位置修改内容

list = [1,2,3,4]
list[0]=0
print(list)

[0, 2, 3, 4] 

5.1.3 切片

同字符串切片

list = [1,2,3,4]
print(list[0:2])
print(list[0:])
print(list[:])

[1, 2]
[1, 2, 3, 4]
[1, 2, 3, 4] 

5.1.4 常用函数 

#增
arr = list(range(1,5))
arr1 = list(range(1,5))
arr.append(9)#增加 只能添加一个
arr.insert(1,0)#插入下标前值
print(arr)
#删
arr.clear()
arr1.pop()#从末尾开始剔除
arr1.pop(2)
arr1.remove(2)#移除的数据
print(arr1)
#改
arr.extend([5,6,7])#因为之前clear
print(arr)
#查询
print(arr.count(1))
print(arr1.index(1))
#排序
arr.sort()#升序
print(arr)
arr.sort(reverse=True)#降序
print(arr)

[1, 0, 2, 3, 4, 9]
[1]
[5, 6, 7]
0
0
[5, 6, 7]
[7, 6, 5] 

5.1.5 其他方法

  • 使用in判断值是否存在
  • 使用+=合并列表
  • 使用len()获取长度
  • 使用join()转换为字符串 

5.1.6 列表推导式 

print([x for x in range(1,11)])

5.1.7 对象引用、浅拷贝、深拷贝

使用=赋值(对象引用)
 

a = [1,2,3,[7,8,9]]
b = copy.copy(a)
c = copy.deepcopy(b)
print(b)
print(c)

[1, 2, 3, [7, 8, 9]]
[1, 2, 3, [7, 8, 9]] 

总结:

  • copy.copy浅拷贝 只拷贝父对象,不会拷贝对象内部的子对象
  • copy.deepcopy深拷贝 拷贝对象及其子对象

5.2 元组

5.2.1 创建元组

  • 元组和列表类似、但属于不可变序列,元组一旦被创建,用任何方法都不可以修改其元素
  • 元组的定义方式与列表相同,但定义时元素是放在一对圆括号“()”而不是[]
  • 元组没有列表中那么多方法可以用,因为不可变,所以安全,速度比列表快
t = (1,2,3)
print(t)
print(type(t))

 (1, 2, 3)
<class 'tuple'>

5.2.2 元组的取值与切片

  • 元组的取值、切片与列表时一样使用
  • 不能对元组的元素进行删除,但是可以删除整个元组 

常用方法
info.count    info.index

5.2.3 元组解包

对应里面元素 

t = (1,2,3)
a,b,c = t
print(a)
print(b)
print(c)

a

b

a,_,_ = t 可以只取一个元素 

5.3 元组与列表的区别

  • 元组一旦定义就不允许更改
  • 元组没有append()、extend()和insert()等方法,无法向元组中添加元素
  • 元组中没有remove()或pop()方法,也无法对元组元素进行del操作,不能从元组中删除元素
  • 从效果上看,tuple()冻结列表,而list()融化列表

元组的优点

  • 元组的速度比列表快,如果定义了一系列常量值,而所需要做的仅是对它的遍历,那么一般使用元组而不用列表
  • 元组不需要改变数据进行“写保护”将使得代码更加安全
  • 元组可用作字典的“键”,也可以作为集合的元素,列表永远不能当作字典键使用,也不能作为集合元素,因为列表不是不可变的

元组的缺点

  • 不可修改

5.4 集合

集合是无序、可变的序列,使用一对大括号界定,元素不可重复,同一个集合每个元素都是唯一的。

集合中只能包含数组、字符串、元组等不可变类型(或者说可哈希),而不能包含列表、字典、集合等可变类型的数据。

注意:创建一个空集合必须用set()而不是{},因为{}是用来创建一个空字典

a={1,2,3}#元素不可重复
print(type(a))
print(a)
a.add(7)#加
print(a)
#print(a[0]) 取值 集合无序,所以不能通过下标取值
print(a.pop()) #按照顺序弹出

<class 'set'>
{1, 2, 3}
{1, 2, 3, 7}

5.5 字典 

字典是一种键值对的数据类型,且可存储任意类型的对象。

字典的每个键值对用冒号(:)分割,整个字典包括在花括号({})中

  • 字典是无序、可变。
  • 定义字典时,每个元素的键和值用冒号分隔,元素之间用逗号分隔,所有元素放在一对大括号里“{}”中
  • 字典中的键为不可变数据,比如整数、实数、复数、字符串、元组等

5.5.1 字典操作 

d = {'name':[]}#创建
print(d)
print(type(d))
print(d['name'])#取值 修改
d['name'] = '老王'
print(d['name'])
d['sex']='nan'#字典添加
print(d)

{'name': []}
<class 'dict'>
[]
老王
{'name': '老王', 'sex': 'nan'}

 5.5.2 常用方法

res1 = d.get('name')
res2 = d.keys()
res3 = d.values()
res4 = d.items()
print(res1)
print(res2)
print(res3)
print(res4)

 冯小白
dict_keys(['name', 'age'])
dict_values(['冯小白', 18])
dict_items([('name', '冯小白'), ('age', 18)])

六、函数

6.1 函数的定义与调用

#def 函数名():
    #函数体

def mylen():
    s='hello'
    l=0
    for i in s:
        l+=1
    print(l)
#函数调用
mylen()

 6.2 函数参数

6.2.1 基本参数调用

def add(a, b):
    c = a + b
    return c
res = add(1, 2)  # # 调用add 传递的参数与定义的参数一一对应
print(res)

6.2.2  默认参数的使用

def add(a,3):   #默认参数必须放在最后,不能放在前面
    c=a+b
    return c
add(3) #调用add

6.2.3 不定参数的使用

def test(a, b, *feng, **bai):
    print(a + '\n'+b)
    print(feng)
    print(bai)

6.3 返回值

使用return返回值,如果没有return相当于返回None

6.4 python闭包机制

Python函数是支持嵌套的,如果在嵌套的内部函数中对外部函数作用域(非全局变量)的变量进行引用,外部函数有调用内部函数作为返回,这种现象称之为闭包。闭包需要满足3个条件:

  • 存在嵌套函数
  • 嵌套的内部函数引用了外部函数的变量
  • 嵌套的外部函数调用内部函数作为返回
def count():
    a = []
    for i in range(1, 4):
        def b():
            return i * i
        a.append(b)
    return a
a1, a2, a3 = count()

 闭包的特点是返回的函数还引用了外层函数的局部变量,所以要正确使用闭包,就要确保引用的局部变量在函数返回后不能变.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值