数据有位置顺序
列表是一个可以使用多种类型元素,支持元素的增删查改
表达方式:[DATA1,DATA2…]
以逗号分割
访问直接 [数据位置] 进行访问
#字符转列表
list("人工智能是未来的趋势")
['人', '工', '智', '能', '是', '未', '来', '的', '趋', '势']
#元组转列表
list(("我",'们','都','很像'))
['我', '们', '都', '很像']
#集合转列表
list({"lct",'hmm','dasg'})
['dasg', 'hmm', 'lct']
#特殊的range,经常和for循环进行配合
如果起始数字缺少,默认为0
数字间隔缺少,默认为1
range(起始数字,中止数字,数字间隔)
for i in [0,1,2,3,4,5,6]:
print(i)
等于
for i in range(6):
print(i)
#range转列表
list(range(1,22,2))
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21]
列表的性质
列表的长度–len(列表)
ls=[0,1,2,3]
len(ls)
4
列表的索引—与同为序列类型的字符串完全相同
变量名[位置编号]
正向索引从0开始
反向索引从-1开始
cars=['baoma','bengci','mashaladi'] print(cars[0]) print(cars[-1]) baoma mashaladi
列表的切片
变量名[开始位置:结束位置:切片间隔]
正向切片:
cars=['baoma','bengci','mashaladi','xuefulang'] print(cars[:3]) #前三个元素,开始位置缺少,默认为0 print(cars[1:4:2]) #第二个到第四个元素 前后索引差为2 print(cars[:]) #获取整个列表,结束位置缺少,默认取值到最后 print(cars[-4:-2]) #获取前两个元素 ['baoma', 'bengci', 'mashaladi'] ['bengci', 'xuefulang'] ['baoma', 'bengci', 'mashaladi', 'xuefulang'] ['baoma', 'bengci']
方向切片:
cars=['baoma','bengci','mashaladi','xuefulang'] print(cars[:-4:-1]) #开始位置缺少,默认为-1 print(cars[::-1]) #获得反向列表 ['xuefulang', 'mashaladi', 'bengci'] ['xuefulang', 'mashaladi', 'bengci', 'baoma']
列表的操作符
用 list1 + list 2 的形式实现列表的拼接,用的不多
list1=[1,2,3] list2=[4,5,6,1] print(list1+list2) [1, 2, 3, 4, 5, 6, 1]
用 n * list 实现列表的成倍复制,这是初始化列表的一种方式
[0]*10 [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]超级重点—列表的增删查改
增加元素
在末尾增加元素–列表.append(待增元素)
在任意位置插入元素–列表.insert(位置编号,待增元素),在位置编号相应圆熟前插入待增元素
在末尾 整体并入另一列表–列表1.extend(列表2),列表1.append(列表2)
删除元素
删除列表 i 位置的元素 列表.pop(位置),不写位置信息,默认删除最后一个元素
删除列表中的第一次出现的待删元素,列表.remove(待删元素)
查找元素
列表中第一次出现待查元素的位置 列表.index(待查元素)
修改元素
通过“ 先索引后赋值” 的方式,对元素进行修改 列表名[位置]=新值
列表的复制
列表.copy()
列表[:]
列表的排序
使用 列表.sort() 对列表进行永久排序,直接在列表上进行操作,无返回值
递减排序 列表.sort(reverse=True)
使用sorted(列表)对列表进行临时排序,原列表保存不变,返回排序后的列表
列表的翻转
使用 列表.reverse()对列表进行永久翻转,直接在列表上进行操作,无返回值
对列表进行遍历
for循环
元组tuple表达方式: (data1,data2…)
元素不支持修改,一旦定义,内部元素不支持增,删和修改操作,被称为不可修改的列表
其它操作和列表完全一致
元组的常见用处打包和解包
def f1(x): #返回x的平方和立方
return x**2,x**3 #实现打包返回
print(f1(3))
print(type(f1(3))) # 元组类型
(9, 27)
a,b =f1(3) #实现解包赋值
print(a)
print(b)
9
27
numbers=[200622,200611,200633]
name=['xiaoming','xiaohong','xiaoqian']
list(zip(numbers,name))
[(200622, 'xiaoming'), (200611, 'xiaohong'), (200633, 'xiaoqian')]
for number,name in zip(numbers,name): #每次取到一个元组,立刻进行解包
print(number,name)
200622 xiaoming
200611 xiaohong
200633 xiaoqian
字典 dict
映射类型,通过 键-值 的映射实现数据存储和查找
表示方式:{key1:value1,key2:value2…}
通过key来访问,[key]
常规的字典是无序的
字典的要求字典的键不能重复
字典的键必须是不可变类型,如果键可变,就找不到对应存储的值了
字典的性质不可变类型:数字,字符串,元组
可变类型:列表,字典,集合(一旦确定,还可以随意增删改)
字典的长度–键值对的个数
字典的索引–通过 字典[键] 的形式来获取对应的值
字典的操作方法增加键值对-----变量名[新键]=新值
删除键值对----
通过 del 变量名[待删除键]
通过变量名.pop(待删除键)
变量名.popitem() 随机删除一个键值对,并以元组返回删除键值对
修改值
通过先索引后赋值的方法对相应的值进行修改
D.get( key,default) 方法
从字典D中获取键key对应的值,如果没有这个键,就返回default
#统计字符出现频率
s="牛奶奶找刘奶奶买牛奶"
d={}
for i in s:
d[i]=d.get(i,0)+1
print(d)
{'牛': 2, '奶': 5, '找': 1, '刘': 1, '买': 1}
d.keys() d.values()方法
把字典中所有的键 值 挑出来
d.items()方法及字典的遍历
stus={200611:"xiaoming",200622:"xioahong",200633:"xiaoqiang"}
print(list(stus.items()))
[(200611, 'xiaoming'), (200622, 'xioahong'), (200633, 'xiaoqiang')]
for k,v in stus.items():
print(k,v)
200611 xiaoming
200622 xioahong
200633 xiaoqiang
集合 set
一系列互不相等元素的集合,无序的
表达方式:{data1,data2…}
可以看作是没有值,或者是值为None的字典
集合的运算s & t 两个集合共同的元素
s | t 包含两个集合的所有元素
s ^ t 包含两个集合中的非共同元素
s - t 包括在s集合中但不在t集合中的元素
逻辑运算与: a and b
或: a or b
非: not(a>b)
复合逻辑运算的优先级
非> 与> 或
存在运算元素 in 列表/字符串
元素 not in 列表/字符串



