一、类别
- 列表list,用[ ]表示
1.1 构建方式
# 方式一
a=[1,2,3]
a=['hello','123']
# 方式二:用list类型构建,括号内为一序列即可
a=list("hello") ->['h','e','l','l','o']
a=list((1,2,3)) # 参数为元组->[1,2,3]
# 方式三:用生成器语法定义一个列表
f = [x for x in range(1, 10)]
f = [x + y for x in 'ABCDE' for y in '1234567'] % -> ['A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'B1'...]
1.2 增加元素的方式
a.append(6); # 追加
a.append('hello'); #'hello'被作为一个整体加入
a.insert(2,8); # 插入
a+=[1000,1003] # 合并
1.3 删除元素的方式
a.remove(3) # 删除元素3, 有重复的话只能删掉一个,删之前记得判断if 3 in a:
a.pop(0) # 删除指定位置的元素
a.clear() # 清空
1.4 排序
#两种方法,均默认升序,可通过reverse=1参数指定升降序
print(sorted(a)) # 此方法a本身没变
a.sort() # a内排好序了
- 元组tuple,用( )表示
2.1 构建方式
t1=1,2,3 # 逗号分隔一些值,自动创建完成元组
t2="hello","nihao" # 同上
t3=(1,2,3) #正常情况
t4=() # 空白元组
t5=(5,) # 只含一个值的元组,必须加个逗号(,)!!!
# 用tuple类型创建,同List
t6=([1,2,3,4,5]) # 括号内是一个序列
2.2 元组不可变,所以没有增加删除元素的函数。
- 字典dict,用{ }表示,可以存储任意类型对象,字典的每个元素都是由一个键和一个值组成的“键值对”,键和值通过冒号分开。
注意:1)键必须是不可变的数据类型,可以用数字,字符串或元组充当。2)不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住。
3.1 构建方式
scores = {'小花': 95, '小李': 78, '小美': 82}
3.2 访问元素
# 方法一:
print(scores['小花']) # ->95
# 方法二:
scores.get('小花',60) # 此方法可设置默认值,指定键的值不存在时,返回该默认值值。
3.3 修改元素
# 方法一:
scores['小李']=98 % ->{'小花': 95, '小李': 98, '小美': 82}
# 方法二:
scores.update(小李=98)
3.4 增加元素,类似修改元素的方法
# 方法一:
scores['小王']=100 % ->{'小花': 95, '小李': 98, '小美': 82, '小王': 100}
# 方法二:
scores.update(小贾=100)
3.5 删除元素
del scores['小花'] # 删除某一元素
dict.clear() # 清空字典
3.6 排序
# 如果传入的是整个字典,则默认对key进行排序,key这个参数就没有作用
d = {'aa': 1, 'bb': 2, 'cc': 5, 'ss': 3}
d_sort = sorted(d, key=lambda x: x[1]) # 此时 d_sort为['aa', 'bb', 'cc', 'ss']
# 如果传入的是字典元素,则key参数起作用,可通过key排序,也可通过value排序,返回一个list
d_sort = sorted(d.items(), key=lambda x: x[1], reverse=False) # 此时 d_sort为[('aa', 1), ('bb', 2), ('ss', 3), ('cc', 5)]
4、集合。Python中的集合跟数学上的集合是一致的,无序且不允许有重复元素,而且可以进行交集、并集、差集等运算。
集合的声明和赋值集合必须用Python提供的工厂函数来声明!
# 添加元素的方式:
Set = {2,3,1,4}
Set.add('hello') # 将'hello'作为整体加入!
Set.update('hello') # 将'hello'拆分成字母加入!
# 删除元素的方式:
Set.remove(108) # 如果不存在该元素会异常
Set.discard(90) # 如果不存在该元素也没事
Set.pop() # 移除并返回 s 中的任意一个元素
# 排序
t = sorted(Set) #返回一个列表
# 交并补等方式
print(set1 & set2)
# print(set1.intersection(set2))
print(set1 | set2)
# print(set1.union(set2))
print(set1 - set2)
# print(set1.difference(set2))
# 判断子集
print(set2 <= set1)
二、list和tuple共同点
因为list和tuple都属于序列,所以有一些共同点,其实字符串str也是序列,所以也具有下列特点(第一条除外)。
1、数据类型:可以存储不同数据类型
2、访问:都是有序列表,通过下标访问元素。
3、切片:切片操作用来访问一定范围内的元素。通过冒号相隔的两个索引来实现:
a=[0,1,2,3,4,5,6,7,8,9]
print a[1:5] # ->[1,2,3,4] 左闭右开区间
print a[-3:-1] # ->[7,8] 左开右开
print a[:5] # ->[0, 1, 2, 3, 4]
print a[1:8:2] # ->[1,3,5,7] 设置步长为2(正数),从左向右切
print a[8:1:-2] # ->[8, 6, 4, 2] 步长为负数时,从右向左切,注意让start<end, 否则结果为空。
4、相加:两个相同类型的序列可以相加并自动合并,序列二的元素排在序列一之后。
5、乘法:
num1=[1,2]
print num1*2 # ->[1,2,1,2]
三、不同点
1、元组在创建时间和占用的空间上面都优于列表, 如果不需要对元素进行添加、删除、修改的时候,可以考虑使用元组。
2、根据是否可变和是否有序: