本节内容
- 列表,元组,字典
1.列表,元组,字典
【列表】
1.定义列表
1 names = [‘Alex‘,"Tenglan",‘Eric‘]
2.通过下标访问列表中的元素,下标从0开始计数
1 >>> names[0] 2 ‘Alex‘ 3 >>> names[2] 4 ‘Eric‘ 5 >>> names[-1] 6 ‘Eric‘ 7 >>> names[-2] #还可以倒着取 8 ‘Tenglan‘
切片:取多个元素
1 >>> names = ["Alex","Tenglan","Eric","Rain","Tom","Amy"] 2 >>> names[1:4] #取下标1至下标4之间的数字,包括1,不包括4 3 [‘Tenglan‘, ‘Eric‘, ‘Rain‘] 4 >>> names[1:-1] #取下标1至-1的值,不包括-1 5 [‘Tenglan‘, ‘Eric‘, ‘Rain‘, ‘Tom‘] 6 >>> names[0:3] 7 [‘Alex‘, ‘Tenglan‘, ‘Eric‘] 8 >>> names[:3] #如果是从头开始取,0可以忽略,跟上句效果一样 9 [‘Alex‘, ‘Tenglan‘, ‘Eric‘] 10 >>> names[3:] #如果想取最后一个,必须不能写-1,只能这么写 11 [‘Rain‘, ‘Tom‘, ‘Amy‘] 12 >>> names[3:-1] #这样-1就不会被包含了 13 [‘Rain‘, ‘Tom‘] 14 >>> names[0::2] #后面的2是代表,每隔一个元素,就取一个 15 [‘Alex‘, ‘Eric‘, ‘Tom‘] 16 >>> names[::2] #和上句效果一样 17 [‘Alex‘, ‘Eric‘, ‘Tom‘]
追加
1 >>> names 2 [‘Alex‘, ‘Tenglan‘, ‘Eric‘, ‘Rain‘, ‘Tom‘, ‘Amy‘] 3 >>> names.append("我是新来的") 4 >>> names 5 [‘Alex‘, ‘Tenglan‘, ‘Eric‘, ‘Rain‘, ‘Tom‘, ‘Amy‘, ‘我是新来的‘]
插入
1 >>> names 2 [‘Alex‘, ‘Tenglan‘, ‘Eric‘, ‘Rain‘, ‘Tom‘, ‘Amy‘, ‘我是新来的‘] 3 >>> names.insert(2,"强行从Eric前面插入") 4 >>> names 5 [‘Alex‘, ‘Tenglan‘, ‘强行从Eric前面插入‘, ‘Eric‘, ‘Rain‘, ‘Tom‘, ‘Amy‘, ‘我是新来的‘] 6 7 >>> names.insert(5,"从eric后面插入试试新姿势") 8 >>> names 9 [‘Alex‘, ‘Tenglan‘, ‘强行从Eric前面插入‘, ‘Eric‘, ‘Rain‘, ‘从eric后面插入试试新姿势‘, ‘Tom‘, ‘Amy‘, ‘我是新来的‘]
修改
1 >>> names 2 [‘Alex‘, ‘Tenglan‘, ‘强行从Eric前面插入‘, ‘Eric‘, ‘Rain‘, ‘从eric后面插入试试新姿势‘, ‘Tom‘, ‘Amy‘, ‘我是新来的‘] 3 >>> names[2] = "该换人了" 4 >>> names 5 [‘Alex‘, ‘Tenglan‘, ‘该换人了‘, ‘Eric‘, ‘Rain‘, ‘从eric后面插入试试新姿势‘, ‘Tom‘, ‘Amy‘, ‘我是新来的‘]
删除
1 >>> del names[2] 2 >>> names 3 [‘Alex‘, ‘Tenglan‘, ‘Eric‘, ‘Rain‘, ‘从eric后面插入试试新姿势‘, ‘Tom‘, ‘Amy‘, ‘我是新来的‘] 4 >>> del names[4] 5 >>> names 6 [‘Alex‘, ‘Tenglan‘, ‘Eric‘, ‘Rain‘, ‘Tom‘, ‘Amy‘, ‘我是新来的‘] 7 >>> 8 >>> names.remove("Eric") #删除指定元素 9 >>> names 10 [‘Alex‘, ‘Tenglan‘, ‘Rain‘, ‘Tom‘, ‘Amy‘, ‘我是新来的‘] 11 >>> names.pop() #删除列表最后一个值 12 ‘我是新来的‘ 13 >>> names 14 [‘Alex‘, ‘Tenglan‘, ‘Rain‘, ‘Tom‘, ‘Amy‘]
扩展
1 >>> names 2 [‘Alex‘, ‘Tenglan‘, ‘Rain‘, ‘Tom‘, ‘Amy‘] 3 >>> b = [1,2,3] 4 >>> names.extend(b) 5 >>> names 6 [‘Alex‘, ‘Tenglan‘, ‘Rain‘, ‘Tom‘, ‘Amy‘, 1, 2, 3]
拷贝
1 >>> names 2 [‘Alex‘, ‘Tenglan‘, ‘Rain‘, ‘Tom‘, ‘Amy‘, 1, 2, 3] 3 4 >>> name_copy = names.copy() 5 >>> name_copy 6 [‘Alex‘, ‘Tenglan‘, ‘Rain‘, ‘Tom‘, ‘Amy‘, 1, 2, 3]
统计
1 >>> names 2 [‘Alex‘, ‘Tenglan‘, ‘Amy‘, ‘Tom‘, ‘Amy‘, 1, 2, 3] 3 >>> names.count("Amy") 4 2
排序&翻转
1 >>> names 2 [‘Alex‘, ‘Tenglan‘, ‘Amy‘, ‘Tom‘, ‘Amy‘, 1, 2, 3] 3 >>> names.sort() #排序 4 Traceback (most recent call last): 5 File "<stdin>", line 1, in <module> 6 TypeError: unorderable types: int() < str() #3.0里不同数据类型不能放在一起排序了,擦 7 >>> names[-3] = ‘1‘ 8 >>> names[-2] = ‘2‘ 9 >>> names[-1] = ‘3‘ 10 >>> names 11 [‘Alex‘, ‘Amy‘, ‘Amy‘, ‘Tenglan‘, ‘Tom‘, ‘1‘, ‘2‘, ‘3‘] 12 >>> names.sort() 13 >>> names 14 [‘1‘, ‘2‘, ‘3‘, ‘Alex‘, ‘Amy‘, ‘Amy‘, ‘Tenglan‘, ‘Tom‘] 15 16 >>> names.reverse() #反转 17 >>> names 18 [‘Tom‘, ‘Tenglan‘, ‘Amy‘, ‘Amy‘, ‘Alex‘, ‘3‘, ‘2‘, ‘1‘]
获取下标
1 >>> names 2 [‘Tom‘, ‘Tenglan‘, ‘Amy‘, ‘Amy‘, ‘Alex‘, ‘3‘, ‘2‘, ‘1‘] 3 >>> names.index("Amy") 4 2 #只返回找到的第一个下标
案例1:如何删除列表重复的第二个值,默认只会删除第一个。
1 #删除重复第二个b 2 names=["a","b","c","d","b"] 3 print(names) 4 5 first=names.index("b") 6 print(first) 7 8 print(names[first:]) 9 print(names[first+1:]) 10 11 second=names[first+1:].index("b") 12 print(second) 13 14 del names[first+second+1] 15 print(names)
【元组】
元组其实跟列表差不多,也是存一组数,只不是它一旦创建,便不能再修改,所以又叫只读列表
1 names = ("alex","jack","eric")
它只有2个方法,一个是count,一个是index,完毕。
案例1:如何在列表中添加索引。
1 for i,v in enumerate(range(3,10)): 2 print(i,v)
0 3 1 4 2 5 3 6 4 7 5 8 6 9 Process finished with exit code 0
案例2:程序:购物车程序
需求:
- 启动程序后,让用户输入工资,然后打印商品列表
- 允许用户根据商品编号购买商品
- 用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒
- 可随时退出,退出时,打印已购买商品和余额
1 #!/usr/bin/python 2 # -*- coding: UTF-8 -*- 3 #blog:http://www.cnblogs.com/linux-chenyang/ 4 # 5 #----------------readme------------------------- 6 #1.启动程序后输入你的工资,然后打印商品列表。 7 #2.如果选择的是列表内的商品,则进行下一步,否则提示没有这个商品。 8 #3.如果选择的商品小于工资,则显示余额,大于工资则显示还差多少钱。 9 #4.选择exit退出并且显示消费的钱和余额。 10 11 product_list = [ 12 ["Iphone7",6500], 13 ["MackBook",12000], 14 ["Python book",60], 15 ["Bike",300], 16 ["coffee",30], 17 ] 18 shoppint_cart = [] 19 20 salary = int(input("Please youer salary:")) 21 while True: 22 for index,i in enumerate(product_list): 23 print("%s.\t%s\t%s" %(index,i[0],i[1])) #\t表示空格。 24 choice = input(">>:").strip() #strip()表示去除空格。 25 if choice.isdigit(): #isdigit()检测字符串是否只由数字组成。 26 choice = int(choice) 27 if choice < len(product_list) and choice >=0: 28 product_item = product_list[choice] #选择的商品 29 if salary >= product_item[1]: 30 salary -= product_item[1] #剩余的钱 31 shoppint_cart.append(product_item) #添加至购物车 32 33 print("%s已经加入到你的购物车,余额还剩%s" %(product_item[0],salary)) 34 else: 35 print("对不起你的余额不足,还差",product_item[1]-salary) #商品价格减去剩余的钱就少还差多少钱 36 else: 37 print("没有这个商品!") 38 39 elif choice == "exit": 40 total_cost = 0 41 print("你已经添加到购物车的东西是:") 42 for i in shoppint_cart: 43 print(i) 44 total_cost += i[1] #循环加购物车里的钱 45 print("您总共消费为",total_cost ) 46 print("您的余额是", salary) 47 break 48 49 else: 50 print("非法的输入,请选择商品序号或者退出exit")
Please youer salary:5000 0. Iphone7 6500 1. MackBook 12000 2. Python book 60 3. Bike 300 4. coffee 30 >>:2 Python book已经加入到你的购物车,余额还剩4940 0. Iphone7 6500 1. MackBook 12000 2. Python book 60 3. Bike 300 4. coffee 30 >>:3 Bike已经加入到你的购物车,余额还剩4640 0. Iphone7 6500 1. MackBook 12000 2. Python book 60 3. Bike 300 4. coffee 30 >>:4 coffee已经加入到你的购物车,余额还剩4610 0. Iphone7 6500 1. MackBook 12000 2. Python book 60 3. Bike 300 4. coffee 30 >>:3 Bike已经加入到你的购物车,余额还剩4310 0. Iphone7 6500 1. MackBook 12000 2. Python book 60 3. Bike 300 4. coffee 30 >>:exit 你已经添加到购物车的东西是: [‘Python book‘, 60] [‘Bike‘, 300] [‘coffee‘, 30] [‘Bike‘, 300] 您总共消费为 690 您的余额是 4310 Process finished with exit code 0
【字典】
时间: 2024-11-08 19:10:18