不可变数据(3个):Number(数字)、String(字符串)、Tuple(元组);
可变数据(3个):List(列表)、Dictionary(字典)、Set(集合)。
列表list
定义:list = [value1, value2, value3],空列表 a = list() 或者 a = []
字符串str1转列表list,mylist = list(str1)
列表特点:
1、可以存放任何类型的数据。 2、有顺序。 3、无需考虑长度,长度可以自由改变。
遍历列表
依次取出对象中的每一项数据,
for i in mylist:
for i in enumerate(mylist):
获取列表元素
索引取值:取单个值,mylist[index] ,索引可以为负值(从后往前取值),但不能超过下标范围。
切片取值:取子列表,mylist[2:5], 不包含结束下标。
示例:
# 列表索引
mylist1 = [1, 'a', 1.1, None, 'wang', [1, 2], False]
print(mylist1)
print(mylist1[3]) # 取出None
print(mylist1[-4]) # 取出None
# 列表切片
str = "hello cali Today is sunday"
mylist = str.split() # 以空格符号分割str
print(mylist[2:5]) # 索引里可以超出index
# -1从后往前取值
print(mylist[-4::-1]) # 取出cali hello,倒着取值从cali(下标-4)开始到结束
print(mylist[1::-1]) # 取出cali hello,倒着取值从cali(下标1)开始到结束
# 切片对象(slice函数,生成一个slice对象,相当于可以给要切的内容取个名字)
sub_list = slice(-4, 0, -1)
print(mylist[sub_list])
a = ['apple', 'orange', 123, 0.1111, 'cali']
print(a[1:]) # 打印第2个到最后
print(a[2:7]) # 打印第2个到第6个
print(a[1:-2]) # 打印第2个到倒数第3个
print(a[0::4]) # 打印列表第1个和最后1个(步长为4)
print(a)
增加
append:追加数据到末尾
示例:a.append(“banana”),a.append([‘apple’,‘apple2’])
insert:在指定index位置插入数据
示例:a.insert(2,“orange”)
extend:将一个列表里的内容扩展到另一个列表
示例:mylist.extend(mylist2),mylist.extend(“abc”)
只限可转为list的类型(str,list,tuple),不可以mylist.extend(3)
注:
mylist+mylist2 也可实现连接两个列表,但不对原列表内容修改而是生成新列表。
删除
pop
mylist.pop() 默认删除最后一个元素,也可以指定index,mylist.pop(2)
返回值为被删除的值,若列表为空则报错
remove
mylist.remove(“apple”) 删除指定数据,返回值是None,若数值不存在则报错
del
根据下标删除 del mylist[2] 、del mylist[0:5]
删除整个列表 del mylist
clear
清空列表 mylist.clear()
注:mylist.clear() 与 mylist = [] 区别
,前者mylist内存地址不变,后者相当于mylist指向新的地址列表
修改
利用下标:mylist[2] = “wang”
利用切片:
mylist[2:5] = [3, 7, 4],
mylist[-1:] = [“a”, “b”, “c”] ==》列表最后一个修改为"a",再末尾添加"b",“c”,
mylist[0:5] = [] ==》 删除前五个
反转
reverse 反转,mylist.reverse() 等价于 mylist[: :-1]
排序
sort 排序,mylist.sort() ,只能相同类型的数据进行排序
统计
len:统计列表中有多少个元素,len(mylist)
count:统计列表中a出现的次数,mylist.count(‘a’)
index:返回a第一次出现的下标,mylist.index(‘a’)
判断成员关系
判断列表中是否有某个数据,print(‘cali’ in list),输出True或False
元组tuple
定义:mytup = () 或 mytup = tuple()
当定义元组只有一个元素时要加一个逗号mytup = (1,)否则type将会识别成int类型
特点:
1、元组长度不可变,不可修改。 2、有顺序。 3、可以放任何数据类型。
列表与元组转换:
list(mytuple)
tuple(mylist)
索引、切片:返回结果为子元组
查找统计:len/index/count
字典dict
定义:
adict = {} 或 adict = dict() ---->空字典
mydict = {‘root’: ‘123’, ‘w’: ‘1234’}
将字典转换为列表:list(mydict.items(()
特点:
1、字典是无序的。
2、存储的是key—value键值对,key为不可变对象,value可为任何数据类型。
3、key必须唯一,否则后面的值会覆盖前面的
遍历:
for i in mydict 默认取出的为key值
for i in mydict.values() 遍历取出value值
取值
- mydict[“key”] ---- key不存在时报错
- mydict.get(“key”) ---- key不存在时返回默认值None
- mydict.get(“key”, 0) ---- key不存在时返回0
新增/修改
mydict[“key”] = {“1”:“value1”}
key已经存在,则表示修改该key的对应数据
key不存在,表示增添这个key的内容
删除
mydict.pop(“key”)
删除key及对应的值,不存在时报错
mydict.pop(“key”,None)
key不存在时返回None
mydict.popitem()
LIFO顺序删除字典键值对,并以元组形式返回,当字典为空则报错
合并
字典的合并不支持 +
dict1.update(dict2) 将dict2 合并到dict1
dict(dict1, **dict2) 将dict1与dict2合并成一个新的字典
判断成员关系
- “key” in mydict 返回True/False
- “key” not in mydict 返回True/False
- “value” in mydict.values()
集合set
定义:myset = set() 空集合
特点:
1、无序的,不重复的。
2、相当于只包含key的字典,key必须是可hash对象,即不可变数据类型。
3、没有下标,没有切片
添加
添加元素:add 和 update
示例:myset.add(‘abc’) 或 myset.update(‘abc’)
移除
移除元素:remove 和 discard
myset.remove(‘c’) 当不存在会报错
myset.discard(‘a’) 不存在不会报错
元组基本操作
并集、交集、差集
s = set('hello')
t = set('python')
# 并集
print(s | t)
print(s.union(t))
# 交集
print(s & t)
print(s.intersection(t))
# 差集
print(s - t)
print(s.difference(t))
作用:
1、去重:将一个列表转换为集合后就自动去重了 set(list)。
2、关系测试:测试两组数组之间的交集、并集。