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...‘)

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

时间: 2024-10-20 17:39:17

python学习:列表、元组、字典的相关文章

python中列表 元组 字典 集合的区别

列表 元组 字典 集合的区别是python面试中最常见的一个问题.这个问题虽然很基础,但确实能反映出面试者的基础水平. (1)列表 什么是列表呢?我觉得列表就是我们日常生活中经常见到的清单.比如,统计过去一周我们买过的东西,把这些东西列出来,就是清单.由于我们买一种东西可能不止一次,所以清单中是允许有重复项的.如果我们扩大清单的范围,统计我们过去一周所有的花费情况,那么这也是一个清单,但这个清单里会有类别不同的项,比如我们买东西是一种花费,交水电费也是一种花费,这些项的类型是可以使不同的.pyt

Python -- 字符串 列表 元组 字典

小Q浪花有意千重雪桃李无言一队春一壶酒一竿纶世上如侬有几人.  ---李煜<渔歌子> --------------------------------------------------------------------------------------- 序列  是Python中最基本的数据结构.序列中每一个元素的位置都有其对应数字编码或索引比如第一个元素的编码是0第二个元素的索引是1............. 序列中可进行的操作索引.切片.加.乘.检查成员另外的长度.最大最小值等内建函

Python的列表&amp;元组&amp;字典&amp;集合

目录 列表(list) 列表的定义 列表的查询 增加数据 修改数据 删除数据 其它常用操作 元组(tuple) 元组的拆包 具名元组 字典(dict) 创建字典 字典添加数据 查询字典数据 修改字典数据 删除字典数据 其它操作 字典的遍历 集合(set) 集合的创建 访问集合 更新集合 删除集合 集合的操作符 集合应用 列表(list) ? 列表(list)是python以及其他语言中最常用到的数据结构之一.Python使用中括号 [ ] 来解析列表.列表是可变的(mutable)--可以改变列

python学习列表字符串字典集合文件操作字符串编码与转换

一.列表 1 names = "ZhangYang GuYun XiangPeng XuLiangchen" 2 names = ["ZhangYang", "GuYun", "XiangPeng", "ChengRongHua","XuLiangchen"] 3 names.append("LeiHaiDong") #在列表最后追加一个元素 4 names.inse

python day2 列表 元组 字典 字符串

列表 #列表事例 >>> li = list((1,2,3,4,5))>>> print li[1, 2, 3, 4, 5] >>> li2 = ['a','b','c','d']>>> print li2['a', 'b', 'c', 'd']>>> #列表尾部增加元素>>> li.append(6)>>> li[1, 2, 3, 4, 5, 6] #清空列表内的元素,适用于py

python 字符串,列表,元组,字典相互转换

1.字典 dict = {'name': 'Zara', 'age': 7, 'class': 'First'} 字典转为字符串,返回:<type 'str'> {'age': 7, 'name': 'Zara', 'class': 'First'} print type(str(dict)), str(dict) 字典能够转为元组,返回:('age', 'name', 'class') print tuple(dict) #字典能够转为元组,返回:(7, 'Zara', 'First') p

python之列表/元组/字典/字符串

一.列表 格式:list = ['xxx','xxx','xxx'] 性质:可以修改列表内容 copy用法: import copy names = ['Yangdanhua',['01','05'],'02','03','04'] names01 = names #直接引用 names02 = copy.copy(names) #浅copy,包括 names02 = list[names] & names02 = names[:],列表内部值未被复制 names03 = copy.deepco

python的列表元组字典集合比较

定义 方法 列表 可以包含不同类型的对象,可以增减元素,可以跟其他的列表结合或者把一个列表拆分,用[]来定义的 eg:aList=[123,'abc',4.56,['inner','list'],7-9j] 1.list(str):将str转换成list类型,str可以使字符串也可以是元组类型 2.aList.append('test'):追加元素到列表中去 3.del aList[1]:删除列表中下标为1的元素 del aList:删除整个列表 4.cmp(list1,list2):比较两个列

python 学习笔记 三 字典

字典 Python的高效的key/value哈希表结构叫做"dict", dict的内容可以写成一系列的key:value对并放入{ }中, 相当于: dict = {key1:value1, key2:value2, ...}, 一个空的字典就是俩个大括号{ }. 下面是从一个空字典创建字典以及一些关键点: 数字, 字符串和元组可以作为字典的key, value可以是任何类型(包括字典). ## Can build up a dict by starting with the the

数据类型之列表 元组 字典

数据类型| 表示形式 |  是否有序列 | 对象是否可变|访问顺序 数字     |   1234  |     没有下标  |  不可变 | 直接访问 字符串| 'asd3234'|     有下标    |    不可变  | 序列访问 元组  tuple |(1,'abc',[1,3] )|有下标 |  不可变  | 序列访问 列表 list | [1,'abc',(1,3),[2,3]] | 有下标 |  可变 | 序列访问 字典 dict |  {'key1':'values','ke