06、Python基础学习--列表(list)、元组和字典

1、列表

#存储5个人的年龄,求他们的平均年龄

age1 = 18
age2 = 19
age3 = 20
age4 = 21
age5 = 22

print((age1 + age2 + age3 + age4 + age5) / 5)

#思考:要存储100个人的年龄
#解决:使用列表
#本质:是一种有序的集合


'''
创建列表

格式:列表名 = 【列表选项1,列表选项2,......,列表选项n】

'''
#创建了一个空列表

list1 = []
print(list1)

#创建带有元素的列表

list2 = [18,19,20,21,22]
index = 0
sum = 0

#嵌套最好不要超过3层
while index < 5:
sum += list2[index]
index += 1
if index == 5:
print("平均年龄:%d" % (sum / 5))

print(list2)

#注意:列表中的元素数据可以是不同类型的

list3 = [18,19,"sunck",21,"True"]

print(list3)

#列表元素的访问:
#注意不要越界,下标超出了可表示的范围

#取值 格式:列表名【下标】

list4 = [1,2,3,4,5]
print(list4[2])

#替换

list4[3] = 300
print(list4)

'''
列表操作

'''
#1、列表组合
list5 = [1,2,3]
list6 = [4,5,6]
list7 = list5 + list6

print(list7)

#2、列表的重复

list8 = [1,2,3]
print(list8 * 3)

#3、判断元素是否在列表中

list9 = [1,2,3,4,5]
print(6 in list9)
print(3 in list9)

#4、列表截取

list10 = [1,2,3,4,5,6,7,8,9]

print(list10[2:5])
print(list10[3:])
print(list10[:5])


#5、二维列表



list11 = [[1,2,3],[4,5,6],[7,8,9]]
print(list11[1][1])

#6、列表方法
#append 在列表中末尾添加新的元素
list12 = [1,2,3,4,5]
list12.append(6)
list12.append([7,8,9])
print(list12)

#extend 在末尾一次性追加另一个列表中的多个值

list13 = [1,2,3,4,5]
list13.extend([6,7,8])
print(list13)



#insert 在下标处添加一个元素,不覆盖原数据,原数据向后顺延

list14 = [1,2,3,4,5]
list14.insert(3,100)
list14.insert(0,[200,300])
print(list14)

#pop(x),移除列表中指定下标的元素,默认移除最后一个元素,并返回删除的数据

list15 = [1,2,3,4,5]
#list15.pop(1)
#list15.pop(2)
print(list15.pop(1))
#print(list15)

#remove 移除列表中某个元素,第一个匹配的结果

list16 = [1,2,3,4,5]
list16.remove(4)
print(list16)


#clear 清除列表中所有的数据

list17 = [1,2,3,4,5]
list17.clear()
print(list17)

#从列表中找出来某个值的下标,第一个匹配的索引值

list18 = [1,2,3,4,5,3]

index18 = list18.index(3)

#圈定范围

index19 = list18.index(3,3,8)

print(index18)

print(index19)

#列表中的元素数量

list20 = [1,2,3,4,5,3]

print(len(list20))

#max 获取列表中的元素最大值

list21 = [1,2,3,4,5,3]

print(max(list21))


#min 获取列表中的元素最大值

list22 = [1,2,3,4,5,3]

print(min(list22))


#count 查看元素在列表中出现的次数

list23 = [1,2,3,4,5,3]

print(list23.count(3))

#删除列表中所有的3

num24 = 0
all = list23.count(3)
while num24 < all:
list23.remove(3)
num24 += 1
print(list23)


#reverse 倒序

list25 = [1,2,3,4,5,3]
list25.reverse()
print(list25)


#sort 默认是升序

list26 = [1,2,3,4,5,3]
list26.sort()
print(list26)


#浅拷贝 引用拷贝
list27 = [1,2,3,4,5,3]
list28 = list27
list28[1] = 200
print(list28)
print(list27)

print(id(list28))
print(id(list27))

#深拷贝 内存拷贝
list29 = [1,2,3,4,5,3]
list30 = list29.copy()
list30[1] = 200
print(list29)
print(list30)

print(id(list29))
print(id(list30))


#将元组转成列表

list31 = list((1,2,3,4))
print(list31)


-------------------------------------------------
2、元组

'''
tuple 元组

本质:是一种有序集合

特点:

1、与列表非常相似
2、一旦初始化就不能修改
3、使用小括号

'''
#创建tuple
#格式:元组名 = (元组元素1,元组元素2,......,元组元素n)

#创建空的元组
tuple1 = ()
print(tuple1)

#创建有元素的元组

#元组中的元素的类型可以不同

tuple2 = (1,2,3,"sss", True)

print(tuple2)


#元组元素的访问
#格式:元组名[下标]
#下标从0开始
#取值

tuple4 = (1,2,3,4,5)
print(tuple4[0])
print(tuple4[1])
print(tuple4[2])
print(tuple4[3])
print(tuple4[4])
#print(tuple4[5]) #下标超过了范围(越界)
print(tuple4[-1]) #获取最后一个元素
print(tuple4[-2])

#print(tuple4[-6]) #越界


#修改元组

tuple5 = (1,2,3,4,[5,6,7])
#tuple5[0] = 100 #报错,元组不能变
tuple5[-1][0] = 500
print(tuple5)


#删除元组
tuple6 = (1,2,3,4,5)
del tuple6
#print(tuple6)

#元组的操作

t7 = (1,2,3)
t8 = (1,2,3)
t9 = t7 + t8
print(t9)

#元组重复
t10 = (1,2,3)
print(t10 * 3)

#判断元素是否在元组中
t11 = (1,2,3)
print(4 in t11)

#元组的截取
#格式:元组名[开始下标:结束下标]
#从开始下标开始截取,截取到结束下标之前

t12 = (1,2,3,4,5,6,7,8)
print(t12[3:7])
print(t12[3:])
print(t12[:7])

#二位元组:元素为二维元组的元组

t13 = (1,2,3),(4,5,6),(7,8,9)
print(t13[1][1])

#元组的方法

t14 = (1,2,3,4,5,6,7,8)

#len () 返回元组中元素的个数

print(len(t14))



#max() 返回元组中的最大值

print(max((1,2,3,4,5,6,7,8,9)))

#min() 返回元组中的最小值

print(min((1,2,3,4,5,6,7,8,9)))


#将列表转成元组

list = [1,2,3]
t15 = tuple(list)
print(t15)

#元组的便利

for i in (1,2,3):
print(i)

-------------------------------------------------------
3、set使用


'''
set : 类似dict ,是一组key的集合,不存储value

本质:无序和无重复元素的集合


'''

#创建

#创建set需要一个list或者dict作为输入集合

#重复元素在set中会自动被过滤

s1 = set([1,2,3,4,5,3,4,5])
print(s1)

s2 = set((1,2,3,4,5,3,4,5))
print(s2)

s3 = set ({1:"good",2:"nice"})
print(s3)

#添加

s4 = set([1,2,3,4,5,3,4,5])
s4.add(6)
s4.add(3) #可以添加重复的,但是不会有效果
s4.add((7,8,9))
#s4.add([7,8,9]) #set的元素不能是列表,因为列表是可变的
#s4.add({1:"a"}) #set的元素不能是字典,因为字典是可变的
print(s4)


#插入整个list 、tuple、字符串,打碎插入

s5 = set([1,2,3,4,5,3,4,5])
s5.update([6,7,8])
s5.update((9,10))
s5.update("sunck")
print(s5)

#删除

s6 = set([1,2,3,4,5,3,4,5])
s6.remove(3)
print(s6)



#便利

s7 = set([1,2,3,4,5,3,4,5])
for i in s7:
print(i)


#set 是没有索引的

#print((s7[3])

for index, date in enumerate(s7):
print(index,date)


s8 = set([1,2,3,4,5,3,4,5])

s9 = set([1,4,5,])

#交集

a1 = s8 & s9
print(a1)

a2 = s8 | s9
print(a2)
print(type(a2))

#list转换为set

l1 = [1,2,3,4,5,3,4,5]
s1 = set(l1)
print(s1)
print(type(s1))

#tuple转换为set

l2 = (1,2,3,4,5,3,4,5)
s2 = set(l2)
print(s2)


#set 转换为list


s3 = {1,2,3}
l3 = list(s3)
print(l3)


#set 转换为tuple

s4 = {1,2,3}
l4 = tuple(s4)
print(l4)

------------------------------
3、字典

'''
概述:

使用键值(key-value)存储,具有极快的查找速度

注意:字典是无序的

key的特性:

1、字典中的key必须唯一
2、key必须是不可变对象
3、字符串、整数等都是不可变的,可以作为key
4、list是可变的、不能作为key


'''

dict1 = {"tom":60, "lilei": 70}

#元素的访问
#获取:字典名[key]

print(dict1["lilei"])
print(dict1.get("sunck"))

ret = dict1.get("sunck")
if ret == None:
print("没有")
else:
print("有")


#添加

dict1["hameimei"] = 99

#因为一个key对应一个value,所以,多次对一个key的value赋值,其实就是修改值

print(dict1)

#删除

dict1.pop("tom")
print(dict1)


#遍历
print("********")
for key in dict1:
print(key,dict1[key])
print("********")
for value in dict1.values():
print(value)
print("********")
print(dict1.items())
print("********")
for k,v in dict1.items():
print(k,v)

print("********")
for i, v2 in enumerate(dict1):
print(i,v2)

#和list比较

#1、插入和查找的速度快,不会随着key-value的增加而变慢
#2、需要占用大量的内存,内存浪费多






posted @ 2020-02-18 12:29  步行-天下  阅读(170)  评论(0)    收藏  举报