数据结构
可迭代对象 iterable
- 一个对象
- 每次能够返回X的成员
例
- 每次读取字符串的一个字符
- 每次读取文件的一行
for x in iterable:
for x in range(10):
for x in "abcdef":
for x in [0,1,2,3]:
range()函数:
用法:
- range(start,stop,step=1),前闭后开区间
- range(20,4,-4)依次返回20,16,12,8
- 与python2的区别:
- xrange()相当于python3的返range()返回的是可迭代对象
- range()
列表
- 列表是可变序列
- 列表元素可修改
- 元素有先后顺序
print(list("abc"))
#['a','b','c']
print(list((1,2,3)))
#[1,2,3]
- 增
- list.append(x)
- 在列表的末端增加一个元素==a[len(a):]=iterable
- list.extend(iterable)
- 利用可迭代对象扩展列表,相当于a[len(a):] =iterable
- 与list.append(x)区别
- list.insert()
- 在指定位置插入一个元素。第一个参数是准备插入到其前面的那个元素的索引,例如 a.insert(0, x) 会插入到整个列表之前,而 a.insert(len(a), x) 相当于 a.append(x)
- list.append(x)
a=[1,2,3]
a.append(4)
print(a)
#[1,2,3,4]
a.extend([4,5])
print(a)
#[1,2,3,4,4,5]
a.append([4,5])
print(a)
#[1,2,3,4,5,[4,5]]
- 删
- list.remov(x)
- 删除第一次出现的x(如果没有,报错)
- list.pop([i]) 弹出第i个元素
- list.clear()清空列表元素,变为空列表
- list.remov(x)
- 改
- list.reverse() 反转
- a[i]=x
- 查
- list.index(x[,start[,end]])定位
- list.count(x)计数
- 切片
- a[i:j]
- a[1:10]
- a[i:j]
- 列表推导式
列表推导式 List Comprehension (近似数学定义的编程表达)
Python:[x for x in range(0,10) if x % 2 == 0]
元组 - tuple
- 元素不可修改
- 元组用(…),列表用[…]
- 元组中只包含一个元素时,需要在元素后面添加逗号
- tuple_1=(50,)
- 删除
- del tuple_1
- 改
- 元素不可修改,tuple_3=tuple1+tuple2 连接
- 查
- tuple[0],tuple[-1]
- 索引,切片
- tup[1:]
假设有
- tup1=(1,2,3)
- tup2=(“xyz”,”abc”)
表达式 | 结果 | 描述 |
---|---|---|
tup1+tup2 | (1,2,3,”xyz”,”abc”) | 按顺序连接 |
tup1*3 | (1,2,3,1,2,3,1,2,3) | 复制,乘法是特殊的加法 |
4 in tup1 | False | 元素是否存在 |
len(tup1) | 3 | 计算元素个数,得到元组长度 |
max(tup1+tup2) | 3 | 返回元组中元素最大值 |
tuple([1,2,3]) | (1,2,3) | 将列表等结构转换成元组 |
字符串
- 不可变类型
- python中没有单个字符
- 查
- s[0],s[2:5]
- 改
- s=s1+s2
- 单引号,双引号,三引号
转义字符
\(在行尾时) | 续行符 |
---|---|
\\ | 反斜杠符号 |
\’ | 单引号 |
\” | 双引号 |
\n | 换行 |
\t | 横向制表符 |
格式化字符串
- print(“My name is %s and weight is %s kg”%(“Ramon”,75))
字符串常用内置函数
函数名 | 功能 |
---|---|
string.capitalize() | 把字符串的第一个字符大写 |
string.count(str,deg=0,end=len(string)) | 统计str出现的次数 |
string.startswith(obj,beg=0,end=len(string)) | 判断是否以obj开头,布尔值 |
string.endswith(obj,beg=0,end=len(string)) | 判断是否以obj结尾 |
string.split(str=”“,num=string.count(str)) | 以str为分隔符切片string,如果num有指定值,则仅分隔num个子字符串 |
字典
可变类型
字典
- 每个键值对key-value pair内部用冒号分隔
- 每个键值对之间用逗号分隔
- 用花括号包裹
- 键必需是唯一的,但值可以随意
- 值可以取任何数据类型,但键必需是不可变的,如字符串,数字或元组
dict={"name":"zare",
"age":88,
"huhu",p}
- 增加
- dict1[“school”]=”家里蹲大学”
- 删除
- del dict1[“name”]#删除键是name的那一行信息
- dict.clear()#清空字典所有信息
- del dict1#删除词典
- 修改
- dict1[“age”]=8
- 访问
- dict1[“Alice”]
函数 | 功能 |
---|---|
dict.keys() | 以列表返回字典中的所有键 |
dict.values() | 以列表返回字典中的所有值 |
dict.items() | 以列表返回字典中的所有(键,值)元组 |
集合
- 不可变类型
- 不支持索引
- 运算
- 并集(A|B)
- 交集(A&B)
- 差集(A-B)
- 异或(A^B)
函数 | 功能 |
---|---|
set.add(x) | 为集合增加一个值 |
set.discard(x) | 删除集合中的一个值 |
set.remove(x) | 删除集合中的一个值,若X不在集合中,会报错 |
set.clear(x) | 删除集合中的所有内容 |
冷冻集合-frozenset
- 不可改变的
- fest=frozenset([1,2,3,4])