Python基础之数据基本类型之(list)
1.list的基本功能
序列是python中最基本的数据结构,序列中的每个元素都分配一个数字--他的位置,或索引,第一个元素的索引是0,第二元素的索引是1,依次类推。
列表是最常用的python的数据类型。
a.创建一个 列表,只要把逗号分隔的不通的数据项使用方括号括起来即可,如下;
1 list1 = ["a","b","c","d","e"] 2 list2 = list()
len(object )可以获取某一对象的长度
列表的常用方法
b.增加:
1 list1.append("f") #在列表末尾,添加f 2 list1.insert(1,'g')#从列表中添加到索引(1)位置的后面
c.删除:
1 list1.remove("e") #移除列表中的e 2 list1.pop(1) #默认删除列表中的最后一个值,加上索引,是删除相应索引的值,并且返回删除的是哪个值 3 del list1[3] #删除列表的索引3的值
4 list1.clear() #清空列表
d.修改
list1[0] = 'A' #修改列表的第一个值
e.查询(切片:获取某一段范围的值)
1 print(list1[0:3]) #查询列表中的前3个元素 2 print(list1[:])#查询列表中的全部元素 3 print(list1[3:])#查询第三个元素到结尾 4 print(list1[::2])#每隔一个,获取一个元素 5 print(list1[::3])#每隔两个,获取一个元素 6 print(list1[0:5:2])#从0到5的,每隔一个,获取一个元素
f.其他的用法
print(list1.index('e')) #获取该元素,在列表中的索引,(如果列表中有多个相同的元素,只会取找到的第一个元素的索引。 #当然也可获取某段范围的索引print(list1.index('d',2,5))) print(list1.count('a')) #统计列表中有几个a(元素) #扩展 list1.extend(list2)#把列表2扩展到列表1 print (list1) ['a', 'b', 'c', 'd', 'e', 'f', 'math', 'chinese', 'englist', 123, 456, 789] #反转 list1.reverse() print(list1) ['f', 'e', 'd', 'c', 'b', 'a'] #排序 list1 = ["a","c","b","e","d"] #python3.x系列的数据类型排序,字符串类型和数字类型不能一起进行排序 list1.sort() print(list1) ['a', 'b', 'c', 'd', 'e']
复制:
1 # copy一份数据,copy原数据修改,新copy出来的数据不修改 2 list3 = list1.copy() 3 print(list3) 4 ['a', 'b', 'c', 'd', 'e']
程序练习
购物车程序:
需求:
- 启动程序后,让用户输入工资,然后打印商品列表
- 允许用户根据商品编号购买商品
- 用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒
- 可随时退出,退出时,打印已购买商品和余额
#!/usr/bin/env python #-*- coding:utf-8 -*- shop_list = [ ['kindle',900], ['mac',11000], ['iphone',6000], ['bike',1800], ['open',180] ] buy_product = [] while True: salary = input("请输入用户工资:") if salary.isdigit(): salary = int(salary) break else: continue while True: print("商品列表".center(50,'*')) for index,i in enumerate(shop_list): print(index,i) # print(shop_list.index(i),i) choose_number = input("请输入商品编号[quit]:") if choose_number.isdigit(): choose_number = int(choose_number) if choose_number < len(shop_list) and choose_number >=0: p_item = shop_list[choose_number] if salary >= p_item[1]: buy_product.append(p_item) salary -= p_item[1] print("已购买的商品:{shop},当前的用户余额:{balance}元".format(shop = buy_product,balance = salary)) else: print("余额不足,不能购买此商品,只有:{balance}元".format(balance=salary)) else: print("无效的商品编号") elif choose_number == 'quit': print("已购买商品".center(50,'*')) for i in buy_product: print(i) print("用户当前余额:{balance}元".format(balance=salary)) exit() else: print("无效的输入")
2.列表推导式
它不是真正的语句,而是类似于循环的表达式——轻量级的循环。
example 1
- [x*x for x in range(10) if not x*x % 3]
example 2 一句话生成一个乘法口诀列表
['%d*%d=%d'%(i,j,i*j) for i in range(1,10) for j in range(1,i+1)]