typora-copy-images-to: Python 编程导论
文章目录
Python 编程导论 Chapter 5 —— 结构化类型、可变性与高阶函数
-
python的标准库中拥有一个小的内建类型集合,用来处理数值数据、字符串、布尔值以及日期和时间。这类的‘单值’类型有时候被称为标量类型
-
int、float 是标量类型,这种类型的对象没有可以访问的内部结构
-
str 是一种结构化的非标量的类型,我们可以使用索引提取单个字符,也可以通过分片操作获取子字符串
-
本章会介绍其他的3种——list、range、dict
5.1 元组
-
元组:是一些元素的不可变有序序列
-
元组中的元素不一定是字符,单个元素可以是任意类型
-
要想表示包含 1 的单元素元组,我们应该写成 (1,)
t1 = (1, 'two', 3)
t2 = (t1, 3.25, 1, 'two')
# 返回一个元组,包含t1 和 t2的公约数
def intersect(t1, t2):
result = ()
for e in t1:
if e in t2:
result += (e,)
return result
print(intersect(t1,t2))
- 序列和多重赋值
- 如果你知道一个序列(元组字符串)的长度,那么可以使用Python中的多重赋值语句方便地
提取单个元素
x, y = (3, 4)
# x 被绑定到3 , y 会被绑定到 4
a, b, c = 'xyz'
# a被绑定到x ,b被绑定到y,c被绑定到z
def findExtremeDivisors(n1, n2) :
"""假设n1和n2是正整数
返回一个元组,包含n1和n2的最小公约数和最大公约数,最小公约数大于1,
如果没有公约数,返回(None,None)"""
minVal, maxVal = None, None
for i in range(2,min(n1,n2) + 1) : # 必须加1,因为不然不包含了,遍历从2开始
if n1%i == 0 and n2%i == 0 : #余数都为0的情况下,判断minVal是否有值,如果没有值,则加入minVal,否则成为maxVal
if minVal == None :
minVal = i
maxVal = i
return (minVal, maxVal)
5.2 范围
- range 函数的三个参数,start 、 stop 、step
- range(0, 7, 2) == range(0, 8, 2) 的值就是 True ,但 range(0, 7, 2) == range(6, -1, -2) 的值则是 False,虽然包含同样的整数,但是顺序不同
5.3 列表与可变性
L = ['I did it all', 4, 'love']
for i in range(len(L)):
print(L[i])
# 输入为:
I did it all
4
love
# 中括号还可以用于表示 list 类型字面量、列表索引和列表切片
表达式 [1, 2, 3, 4][1:<