列表的格式:
一组容器:存储多个数组
list是一种有序的元素集合,占用连续的内存空间;
list可变:其中的元素可以随时添加和删除,最好是在尾部添、删。
list是异构的–可以包含任意类型的数据(整数、字符串…,甚 至list)
定义一个列表:
1.空列表:[]
list1=[]
print(type(list1))
2.列表里面有内容:list2=[“ss”,‘A’,‘B’,8.9]
3.列表里面可以嵌套列表:[[],[],[]]
获取列表里面的元素:可以通过索引或者下标来进行获取
list1=['辣条','面包','臭豆腐']
print(list1[1])
切片:
list1[:2]
列表的添加:
1.append 2. extends
获取长度:
len(list)
列表的删除:
1.del:根据下标进行删除; del list1[3]
2.pop:删除最后一个元素 list.pop(3)
3.remove:根据元素的值进行删除
以上都是就地操作,应该尽量避免在中间位置上插入或删除
list.clear()清空列表后还可以往列表中添加元素;
但是del list之后,是将list这个列表的结构也删除,不能再向列表中添加元素;
clear():清空列表元素
1.查找:in 和not in index和count
元素 in 列表:返回bool类型 元素not in列表
2.列表.index(元素) 返回元素的下标位置,如果没有此元素,则报错
3.通过count来计数,列表.count() 返回整数,返回为0则表明不存在此元素 ,否则返回存在的元素的个数
list1=[1,3,5,7,9]
list2=list1
list2.append(44)
print(list1)
print(list2)#list1和list2指向同一个列表,一个变动,另一个也变动
list1.clear()
print(list2)#返回[]
del list2#指的是将list2指向list1的那个位置的指针断开,并把list2名字回收,只剩下list1了
print(list1)#list1中数据还存在
排序和翻转:
1.sort() 2.reverse()
随机生成1-20之间的随机整数,保存到列表中,遍历打印
import random
list=[]
for i in range(8):
ran=random.randint(1,20)
list.append(ran)
print(list)
list.sort(reverse=True)#默认是升序,添加reverse=True,将列表降序排列
print(list)
交叉赋值:
a,b=b,a
冒泡排序:
array=[5,1,7,6,8,2,4,3]
for i in range(0,len(array)-1):
for j in range(0,len(array)-i-1):
if array[j]>=array[j+1]:
a=array[j]
array[j]=array[j+1]
array[j+1]=a
print(array)
和列表类似,但是列表的元素不能修改,元组使用(),列表使用[]
t1=()
print(type(t1))
t2=('aa')
print(type(t2))#类型为str
注意事项:要使t2为一个元组,t2=(‘aa’,)
如果元组中只有一个元组,则必须添加逗号
下标和切片:字符串,元组,列表,注意下标越界
print(t3[1:])
方法:
count() index()
t3.index(‘a’,1)#跳过找到的第一个a,从之后继续查找
t3.index(‘a’,1,6)#不包含右边界6,包含左边界1
支持for in循环
没有修改,删除,增加的特性
list(tuple)#元组转列表
tuple(list)#列表转元组
不可变的tuple有什么意义?
因为tuple不可变,所以代码更安全。如果可能,能用tuple代替list就尽量用tuple。
dict 没有下标或者切片
添加元素:
字典名[key]=value
注意:
key是唯一的,所以在添加的时候出现同名的key,后面的key对应的value则替换原来的;
键是不能修改的,所以dict的key必须是不可变对象,字典中只能修改键后面的值;
修改:
字典名[key]=value 关键看“键”:如果字典中不存在键,则是添加;如果字典中存在键,则是修改。
练习:
book={}
书名,价格,作者,出版社
促销:价格折扣 打8折
打印最终字典中的内容;
book={}
book['书名']="三体"
book['价格']=20
book['作者']="刘慈欣"
book['出版社']="***出版社"
print(book)
#修改价格
book['价格']*=0.8
print(book)
字典的遍历和查询:
列表:
list.index()
list.count()
字典:book.get(‘书名’)
get:还可以设置默认值,只要找不到,就会使用自己设置的默认值
获取:
dict.get(key):根据key获取value值
dict[key]:根据key获取value值
区别:get(key)里面的key如果不存在则返回None,同时get(key,默认值),可以设置默认值;
dict[key]如果对应的key不存在,则会报error错误。
字典遍历:
获取字典中所有的value值:字典.values() 就是将所有的值都存放到了一个列表,列表可以使用for in来进行遍历
for v in book.values():
print(v)
取出所有的键:
book.keys();
for k in book.keys():
print(k)
dict和list的区别:
和list比较,dict有以下几个特点:
查找和插入的速度极快,不会随着key的增加而增加;
需要占用大量的内存,内存浪费多。
而list相反:
查找和插入的时间随着元素的增加而增加;
占用空间小,浪费内存很少。
所以,dict是用空间来换取时间的一种方法
set和dict类似,也是一组key的集合,但不存储value。也可以认为set是简化的dict(只有key,没有value)。由于key不能重复,所以,set中没有重复的元素。
格式:
s=set()
s.add(4)
注意:
set和dict的唯一区别仅在于没有存储对应的value,set的原理和dict一样,所以,同样不可以放入可变对象,因为无法判断两个可变对象是否相等,也就无法保证set内部“不会有重复元素”。
只包含字符串、数字等不可变对象的tuple才能作为set的元素