码迷,mamicode.com
首页 > 编程语言 > 详细

python学习:列表、元组、字典

时间:2019-12-23 19:10:53      阅读:118      评论:0      收藏:0      [点我收藏+]

标签:用户   inpu   ext   执行   most   mac   作业   recent   python   

一、列表:

列表的下标是从0开始的,最后一个元素的下标可以用 -1,取元素的时候”顾头不顾尾“。定义如下列表:

names = ["Alex","Tenglan","Eric","Rain","Tom","Amy"]

1、切片:

 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‘]

 

2、追加append:

1 >>> names
2 [‘Alex‘, ‘Tenglan‘, ‘Eric‘, ‘Rain‘, ‘Tom‘, ‘Amy‘]
3 >>> names.append("我是新来的")
4 >>> names
5 [‘Alex‘, ‘Tenglan‘, ‘Eric‘, ‘Rain‘, ‘Tom‘, ‘Amy‘, ‘我是新来的‘]

3、插入insert:

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‘, ‘我是新来的‘]

4、修改:

1 >>> names
2 [‘Alex‘, ‘Tenglan‘, ‘强行从Eric前面插入‘, ‘Eric‘, ‘Rain‘, ‘从eric后面插入试试新姿势‘, ‘Tom‘, ‘Amy‘, ‘我是新来的‘]
3 >>> names[2] = "该换人了"
4 >>> names
5 [‘Alex‘, ‘Tenglan‘, ‘该换人了‘, ‘Eric‘, ‘Rain‘, ‘从eric后面插入试试新姿势‘, ‘Tom‘, ‘Amy‘, ‘我是新来的‘]

5、删除:

三种方式:

a、del 列表[下标索引]

b、列表.remove("元素名称")

c、列表.pop[下标索引],pop和del的区别在于pop会返回删除的元素,但是del无返回值 

 1 >>> names
 2 [‘Alex‘, ‘Tenglan‘, ‘强行从Eric前面插入‘, ‘Eric‘, ‘Rain‘, ‘从eric后面插入试试新姿势‘, ‘Tom‘, ‘Amy‘, ‘我是新来的‘]
 3 >>> del names[2] 
 4 >>> names
 5 [‘Alex‘, ‘Tenglan‘, ‘Eric‘, ‘Rain‘, ‘从eric后面插入试试新姿势‘, ‘Tom‘, ‘Amy‘, ‘我是新来的‘]
 6 >>> del names[4]
 7 >>> names
 8 [‘Alex‘, ‘Tenglan‘, ‘Eric‘, ‘Rain‘, ‘Tom‘, ‘Amy‘, ‘我是新来的‘]
 9 >>> 
10 >>> names.remove("Eric") #删除指定元素
11 >>> names
12 [‘Alex‘, ‘Tenglan‘, ‘Rain‘, ‘Tom‘, ‘Amy‘, ‘我是新来的‘]
13 >>> names.pop() #删除列表最后一个值 
14 ‘我是新来的‘
15 >>> names
16 [‘Alex‘, ‘Tenglan‘, ‘Rain‘, ‘Tom‘, ‘Amy‘]
17 >>> names.pop(1) #删除指定位置的元素
18 Tenglan
19 >>> names
20 [‘Alex‘, ‘Rain‘, ‘Tom‘, ‘Amy‘]

6、扩展extend:

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]

7、拷贝:

 1 >>> import copy
 2 >>> names = ["Alex","Tenglan",["Eric",1000],"Rain","Tom","Amy"]
 3 >>> name1=names.copy()
 4 >>> name1
 5 [‘Alex‘, ‘Tenglan‘, [‘Eric‘, 1000], ‘Rain‘, ‘Tom‘, ‘Amy‘]
 6 >>> name2 = copy.copy(names)
 7 >>> name2
 8 [‘Alex‘, ‘Tenglan‘, [‘Eric‘, 1000], ‘Rain‘, ‘Tom‘, ‘Amy‘]
 9 >>> name3=names[:]
10 >>> name3
11 [‘Alex‘, ‘Tenglan‘, [‘Eric‘, 1000], ‘Rain‘, ‘Tom‘, ‘Amy‘]
12 >>> name4=list(names)
13 >>> name4
14 [‘Alex‘, ‘Tenglan‘, [‘Eric‘, 1000], ‘Rain‘, ‘Tom‘, ‘Amy‘]
15 
16 上面采取了4种方式对names列表进行了copy操作。
17 现在,我们来继续往下看:
18 >>> names
19 [‘Alex‘, ‘Tenglan‘, [‘Eric‘, 1000], ‘Rain‘, ‘Tom‘, ‘Amy‘]
20 >>> name_copy=list(names)
21 >>> name_copy
22 [‘Alex‘, ‘Tenglan‘, [‘Eric‘, 1000], ‘Rain‘, ‘Tom‘, ‘Amy‘]
23 >>> names[1]=‘张三‘
24 >>> names
25 [‘Alex‘, ‘张三‘, [‘Eric‘, 1000], ‘Rain‘, ‘Tom‘, ‘Amy‘]
26 >>> name_copy
27 [‘Alex‘, ‘Tenglan‘, [‘Eric‘, 1000], ‘Rain‘, ‘Tom‘, ‘Amy‘]
28 注意:这里我们把names列表copy了一个新的列表name_copy,然后我们更改了names表的第2个元素,从结果可以看出新列表name_copy的第2个元素并没有发生改变。
29 
30 接着往下看:
31 >>> names[2][1]=7777
32 >>> names
33 [‘Alex‘, ‘张三‘, [‘Eric‘, 7777], ‘Rain‘, ‘Tom‘, ‘Amy‘]
34 >>> name_copy
35 [‘Alex‘, ‘Tenglan‘, [‘Eric‘, 7777], ‘Rain‘, ‘Tom‘, ‘Amy‘]
36 注意:names列表的第3个元素也是一个列表,这里我们执行names[2][1]=7777后发现,names和name_copy两个列表的相应元素同时发生了改变。
37 
38 这就是深度copy和浅度copy,上面的4中copy方式都是浅度copy,浅度copy只能copy第一层的元素,对于列表中含有的列表的元素,只是copy了这个子列表的一个内存地址而已。
39 
40 如果要实现我们在改变names列表中列表的元素时,copy过来的列表的对应元素不发生变化,必须显示的进行深度copy,往下看:
41 >>> names[2][1]=1521
42 >>> names
43 [‘Alex‘, ‘张三‘, [‘Eric‘, 1521], ‘Rain‘, ‘Tom‘, ‘Amy‘]
44 >>> name_copy2
45 [‘Alex‘, ‘张三‘, [‘Eric‘, 7777], ‘Rain‘, ‘Tom‘, ‘Amy‘]

8、统计count:

统计某个元素在列表中出现的次数。

1 >>> names=(1,2,3,2,4,5,3,2,7,2,3)
2 >>> names.count(3)
3 3
4 >>> names.count(2)
5 4

9、排序sort、反转reverse:

 1 >>> names = ["Alex","Tenglan",["Eric",1000],"Rain","Tom","Amy"]
 2 >>> names.sort()  #排序
 3 Traceback (most recent call last):
 4   File "<stdin>", line 1, in <module>
 5 TypeError: ‘<‘ not supported between instances of ‘list‘ and ‘str‘
 6 >>> names.pop(2)
 7 [‘Eric‘, 1000]
 8 >>> names
 9 [‘Alex‘, ‘Tenglan‘, ‘Rain‘, ‘Tom‘, ‘Amy‘]
10 >>> names.sort() #排序
11 >>> names
12 [‘Alex‘, ‘Amy‘, ‘Rain‘, ‘Tenglan‘, ‘Tom‘]
13 
14 >>> names.reverse() #反转
15 >>> names
16 [‘Tom‘, ‘Tenglan‘, ‘Rain‘, ‘Amy‘, ‘Alex‘]

列表的排序和反转对中文没有效果:

 1 >>> names=[‘zhangsan‘,‘张三‘,‘章邯‘]
 2 >>> names.sort()
 3 >>> names
 4 [‘zhangsan‘, ‘张三‘, ‘章邯‘]
 5 >>> names=[‘张三‘,‘zhangsan‘,‘章邯‘]
 6 >>> names.sort()
 7 >>> names
 8 [‘zhangsan‘, ‘张三‘, ‘章邯‘]
 9 >>> names.append(‘阿三‘)
10 >>> names
11 [‘zhangsan‘, ‘张三‘, ‘章邯‘, ‘阿三‘]
12 >>> names.sort()
13 >>> names
14 [‘zhangsan‘, ‘张三‘, ‘章邯‘, ‘阿三‘]
15 >>> names.append(‘asan‘)
16 >>> names.sort()
17 >>> names
18 [‘asan‘, ‘zhangsan‘, ‘张三‘, ‘章邯‘, ‘阿三‘]

10、获取下标index:

注意:只返回找到指定元素的第一个下标

1 >>> names
2 [‘asan‘, ‘zhangsan‘, ‘张三‘, ‘章邯‘, ‘张三‘, ‘阿三‘]
3 >>> names.index(‘zhangsan‘)
4 1
5 >>> names.index(‘张三‘)
6 2

二、元组

元组和列表其实差不多,只是元组一旦创建就不允许再修改,所以元组又叫做只读列表。

元组的定义:

names = ("Alex","Tenglan","Eric","Rain","Tom","Amy")

元组只有两个方法:count、index

三、字典

四、购物车作业

需求(列表):

1、启动程序后,让用户输入工资,然后打印商品列表

2、用户选择商品编号购买商品

3、用户选择商品后,检测余额是否够,如果余额够就直接扣款,如果不够就提醒

4、可随时退出,退出时打印已购买的上和余额

技术图片
 1 product_list = [(‘Iphone‘,5800),
 2                 (‘Mac Pro‘,9800),
 3                 (‘Bike‘,800),
 4                 (‘Watch‘,10600),
 5                 (‘Coffee‘,31),
 6                 (‘Alex Python‘,120)]
 7 shopping_cart = []
 8 
 9 salary = input("Input your salary: ")
10 if salary.isdigit():
11     salary = int(salary)
12     while 1:
13         for item in product_list:
14             print(product_list.index(item) + 1, item)
15 
16         user_choice = input("请选择需要购买的商品:").lower()
17         if user_choice.isdigit():
18             user_choice = int(user_choice)
19             if user_choice > 0 and user_choice <= len(product_list):
20                 p_item = product_list[user_choice - 1]
21                 if p_item[1] <= salary:
22                     shopping_cart.append(p_item)
23                     salary = salary - p_item[1]
24                     print("Added %s into shopping cart,your current balance is \033[31;1m%s\033[0m"%(p_item[0], salary))
25                 else:
26                     print("\033[32;1m你的余额只剩下【%s】元,无法再购买任何商品!\033[0m"%salary)
27             else:
28                 print("你选择的商品不存在商品列表中!")
29         elif user_choice == ‘q‘:
30             print("-------shopping cart--------")
31             for index, item in enumerate(shopping_cart):
32                 print(item)
33             print("Your current balance is :", salary)
34             break
35         else:
36             print(‘Invalid Option...‘)
View Code

python学习:列表、元组、字典

标签:用户   inpu   ext   执行   most   mac   作业   recent   python   

原文地址:https://www.cnblogs.com/Ryan-Fei/p/12085080.html

踩
(0)
赞
(0)
   
举报
评论 一句话评论(0)
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!