列表 元组 集合 字典
列表
什么是我们日常生活中经常见到的清单。比如,统计过去一周我们买过的东西,把这些东西列出来,就是清单。由于我们买一种东西可能不止一次,所以清单中是允许有重复项的。如果我们扩大清单的范围,那么这也是一个清单,但这个清单里会有类别不同的项,交水电费也是一种花费,这些项的类型是可以使不同的。python的列表个跟清单的道理是一样的,特点就是:可重复,类型可不同。类型不同也是跟数组最本质的区别了。python里的列表用“[]”表示:
names1=['zhangsan','lisi','wangermazi','zhaosi',['phone',1000],'wangwu']
#列表读取
a=names1[1] #listname[position],根据位置取内容 print(a) b=names1.index('zhaosi') #index根据内容找位置 print(names1[0]) #打印下标为0的值 print(names1[1]) #打印下标为1的值 print(names1[-1]) #打印下标为-1的值(倒数第一个) #切片 ":"右边不包含左边包含 print(names1[:])#全部打印 print(names1[:3])#打印下标是0到下标为3的值,不包含3 print(names1[:-1])#打印到倒数第二位 print(names1[1:-1])#打印下标为1到倒数第二位 print(names1[::-1])#倒序打印 print(names1[::2])#间隔为2打印全部列表 print(names1[::2])#间隔为2打印全部列表
#列表写入
#列表追加 append names1.append('Hello world') print(names1) #列表插入insert names1.insert(0,'wanneng') #插入位置,值 print(names1)
#修改
names1[0]='Wanneng' print(names1)
#删除del
del names1[0] #删除位置 print(names1) #remove print(names1) names1.remove('zhaosi') #删除zhaosi如果有多个删除第一个 print(names1) #pop() 默认删除最后一个值,可写明位置 print(names1) names1.pop(-1) #删除位置编号为-1的值 print(names1)
#扩展extend()
name1=[1,2,3,] name2=[3,4,5] name1.extend(name2) print(name1)
#列表拷贝 name1=[1,2,3,] name2=[3,4,5] name3=name1.copy() name3.append(7) print(name3) print(name1) #列表值统计 name4=name1.extend(name2) print(name4) # print(name4.count(3)) #统计3的个数 #列表排序(字符串和数字混合不能排序,尴尬不) name4.append('7') name4.sort() #正序排序 # line 74, in <module> # names1.sort() # TypeError: '<' not supported between instances of 'list' and 'str' name4[-1]=7 print(name4) name4.reverse()#反序 print(name4) #获取下标index print(names1) print(names1.index('lisi'))
元组
#写法,元组只能查询 #tuple_1=('value1','value2','value3')
list1=(1,2,3,4,3,'make','kobe') print(list1) print(list1.index(3)) #index方法 print(list1.count(3)) #count方法
集合
集合就是我们数学学的集合,没有什么特殊的定义。集合最好的应用是去重。集合没有特殊的表示方法,而是通过一个set函数转换成集合
lst = [ 1, 1, 0] lst_set = set(lst) #lst_set 为1 , 0 print(lst_set) tup = (2, 2, 1) tup_set = set( tup) # tup_set为2 , 1 print(tup_set) # for item in lst_set: print(item)
字典
#字典写法
data={ 1:11, 2:22, 3:33, 4:{ 4:401, 4:{402:4002 }, }, 'china':'中国', 'chinas':['中国'], } data[2]='葫芦娃' print(data.get(2))
#字典的写法 {key:value},key必须是唯一的.
#dict 增加
data[22]='葫芦娃' data[5]='葫芦娃' data[2]='葫芦娃' print(data) #dict 修改 data[2]='222' print(data) #dict 删除 data.pop(4) #pop删除key值为4的数据组 del data[2] #del删除key2 data.popitem() #随机删除 print(data)
#dict查找
print(data.get(1)) #获取key为1的内容,get的值如果不存在返回None print(4 in data) #key 4在不在data字典里面 print(data['china']) #获取key为china的内容,如果key不存在则会报错 print(data.keys())
#修改
data['chinas'][0] +='longyao'#值修改为['中国longyao'],值为数组 # data['chinas'] = 'longyao1' #值修改成longyao1 print(data) #setdefault data.setdefault(1,'allen') #创建一个key jp 值allen的条目,如果key存在则不发生改变 print(data) # data2={ 'a':'aa', 'b':'bb', 3:'cc', } data.update(data2) #如果两个字典中有重复的后者覆盖之前的没有的就合并 print(data)
#item 字典变成列表
print(data.items())
#fromkeys初始化一个字典
a=dict.fromkeys([10,9,3],[11,22,'dac']) #初始化一个新的字典(value都是相同的)key 1 2 3 value是[11,22,'dac'] a[10][1]='33333' #这种方法创建的字典由于内存共享修改的后的单个value会全部更改。 print(a)
___________________________
#练习1
创建列表data2
data2={ 'a':'aa', 'b':'bb', 3:'cc', }
打印key 和value的值
1.
for i in data2: print(i,'-----',data2[i])
2.
#转换成列表把key和value分别赋值给列表的下标0和1 for i,x in data2.items(): print(i,x)
3.
#enumerate获取行号 for x,y in enumerate(data2.items(),1): #默认从0开始,本例从1开始计数 print(x,y[0],y[1])
练习2
引用for循环if。。。else循环,while ,数组,列表
1.创建列表格式是 商品名称:商品价格
2.对着写商品进行增删改查

#__Author: Playon #__Date: 2016/3/12 12:05 #-*- coding:utf-8 -*- product={ '苹果':'6', '栗子':'25', '鸡蛋':'2.5', '花菜':'26', 'phone':'6000', 'pen':'16', } def price(): #price change choice = input('Please input change goods:') if choice in product: price_new=input('Please input %s new price:'%choice) product[choice]=price_new else: print('Goods %s do not exist!'%choice ) def goods_add(): #goods add choice = input('Input new goods name:') price = input('Input new goods price:') if choice in product: print(choice ,'existed') else: product[choice]=price def goods_del(): # goods del choice = input('Input delete goods:') if choice in product: del product[choice] else: print('%s not existed!') while True: num = 1 #定义商品序号从1开始 for goods in product: print('\033[1;34;m%s.%s\t\t%s\033[0m'%(num,goods,product[goods])) #按照指定格式打印商品 num +=1 #选择操作类型 choice_plan= input( """\033[0;33;m############## 请选择 ################ # a---添加商品选择 a # # e---编辑商品选择 e # # d---删除商品选择 d # # q---退出系统选择 q # #####################################\033[0m""") if choice_plan == 'a': goods_add() elif choice_plan == 'e': price() elif choice_plan == 'd': goods_del() elif choice_plan == 'q': break else: print('Choice Error!') continue
Please input pen new price:89
1.苹果 6
2.栗子 25
3.鸡蛋 2.5
4.花菜 26
5.phone 6000
6.pen 89
############## 请选择 ################
# a---添加商品选择 a #
# e---编辑商品选择 e #
# d---删除商品选择 d #
# q---退出系统选择 q #
#####################################