一、列表

1、列表定义

names=["Jhon","Lucy","Michel","Tom","Wiliam"]

列表切片:

names=["HeXin","ZhangLiang",["caijie","LiSi"],"LiYun","TianJun",'GuYun']
print(names)
print(names[0])
print(names[1:3]) #不能取到索引为3的列表元素
print(names[-1])#取列表的倒数第一位的值
print(names[-2:]) #取倒数两个值
print(names[0:3])
print(names[:3]) #与print(names[0:3]) 等价print(names.index("GuYun"))  # 打印输出索引值
print(names[names.index("GuYun")])
print(names.count("LiYun"))  #打印输出列表中"LiYun"的个数

结果:

['HeXin', 'ZhangLiang', ['caijie', 'LiSi'], 'LiYun', 'TianJun', 'GuYun', 'LiYun']
HeXin
['ZhangLiang', ['caijie', 'LiSi']]
LiYun
['GuYun', 'LiYun']
['HeXin', 'ZhangLiang', ['caijie', 'LiSi']]
['HeXin', 'ZhangLiang', ['caijie', 'LiSi']]
5
GuYun
2

2、列表元素的追加与删除

names=["HeXin","ZhangLiang",["caijie","LiSi"],"LiYun","TianJun",'GuYun',"LiYun"]
print(names)
#列表追加:
names.append("李斯") #默认插入到列尾names.insert(1,"唐宇") #指定位置插入names[2]="肖静"  #指定位置插入print("-----after append-----\n",names)
#列表删除:
names.remove("LiYun")
del names[1] #删除列表中索引为1的值
names.pop()#默认删除最后一个值
names.pop(0)#删除第一个值
print("-----after delete-----\n",names)

运行结果:

['HeXin', 'ZhangLiang', ['caijie', 'LiSi'], 'LiYun', 'TianJun', 'GuYun', 'LiYun']
-----after append-----['HeXin', '唐宇', '肖静', ['caijie', 'LiSi'], 'LiYun', 'TianJun', 'GuYun', 'LiYun', '李斯']
-----after delete-----['肖静', ['caijie', 'LiSi'], 'TianJun', 'GuYun', 'LiYun']

删除整个列表:del names

反转列表值的位置:name.reverse()

排序:names.sort()

3、列表复制

语句:import copy

列表扩展:

names=["HeXin","ZhangLiang",["caijie","LiSi"],"LiYun","TianJun",'GuYun',"LiYun"]
print(names)names2=[1,2,3,4]
names.extend(names2) #将names2的值添加到names中
print(names,names2)

运行结果:

['HeXin', 'ZhangLiang', ['caijie', 'LiSi'], 'LiYun', 'TianJun', 'GuYun', 'LiYun']
['HeXin', 'ZhangLiang', ['caijie', 'LiSi'], 'LiYun', 'TianJun', 'GuYun', 'LiYun', 1, 2, 3, 4] [1, 2, 3, 4]

列表复制与变量复制略有不同:

import copy
#变量的复制:
name1="LiHai"
name2=name1
name1="TianJun"
print("-----name1>>",name1)
print("-----name2>>",name2)#列表的复制:
names=['1','2','3']
names2=names.copy() #浅copy
names[0] = 55
print("-----names>>",names)
print("-----names2>>",names2)names3=[1,2,[5,7],3]
print("-----修改前的names3>>",names3)
names4=copy.copy(names3) #浅copy
names5=copy.deepcopy(names3) #深copy
names3[2][0]=66
names3[0]=88
print("-----names3>>",names3)
print("-----names4>>",names4)
print("-----names5>>",names5)

结果:

-----name1>> TianJun
-----name2>> LiHai
-----names>> [55, '2', '3']
-----names2>> ['1', '2', '3']
-----修改前的names3>> [1, 2, [5, 7], 3]
-----names3>> [88, 2, [66, 7], 3]
-----names4>> [1, 2, [66, 7], 3]
-----names5>> [1, 2, [5, 7], 3]

变量name2被赋值之后不会随name1的改变而改变,列表mames5在深copy的条件下,其结果与变量的复制效果一样,并没有随names3的改变而改变;而列表names4通过浅copy后,其最外层不会随names3的改变而改变,但内层会随names3的改变而改变。

4、利用for循环打印列表names

names=["HeXin","ZhangLiang",["caijie","LiSi"],"LiYun","TianJun",'GuYun',"LiYun"]
for i in names:print(i)

结果:

HeXin
ZhangLiang
['caijie', 'LiSi']
LiYun
TianJun
GuYun
LiYun

5、不用for循环打印列表

names=["HeXin","ZhangLiang",["caijie","LiSi"],"LiYun","TianJun",'GuYun',"LiYun"]
print(names[0:-1:2]) #打印列表中索引值为0到-1的值,步长为2
print(names[::1]) #打印列表中所有值

结果:

['HeXin', ['caijie', 'LiSi'], 'TianJun']
['HeXin', 'ZhangLiang', ['caijie', 'LiSi'], 'LiYun', 'TianJun', 'GuYun', 'LiYun']

注意:列表打印属于“顾头不顾尾”,如print(names[0:2]) ,结果只能输出列表的前两个值。

利用列表书写购物车程序:

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

(2)用户输入相应的商品编号购买商品

(3)用户输入商品编号后,系统检测余额是否足够,足够则直接扣款,不够则提示

(4)可随时退出购物,并打印已购商品和余额

shopping_list=[]
product_list=[['iphone',5800],['mac pro',9800],['bike',800],['watch',10600],['coffee',31]
]salary=input('input your salary:')
if salary.isdigit():salary=int(salary)while True:for index, item in enumerate(product_list):#enumerate:读取列表的索引#print(product_list.index(item),item) 等价于上一句话print(index,item)user_choice=input('选择要买什么?')if user_choice.isdigit():#如果输入的是数字user_choice=int(user_choice)#将字符窜转换为整型if user_choice <len(product_list) and  user_choice>=0:#如果用户输入的数字在user_choice列表的长度范围之内p_item=product_list[user_choice]#product_list列表中商品价格赋值给p_itemif p_item[1] <= salary:shopping_list.append(p_item)salary-=p_item[1]print('Added %s into shopping cart,your current banlance is \033[31;1m%s\033[0m'%(p_item,salary))else:print('\033[41;1m你的余额只剩[%s]啦\033[0m'% salary)else:print('product code[%s] is not exist'% user_choice)elif user_choice=='q':print('....shopping list....')for p in shopping_list:print(p)print('your current balance:',salary)exit()else:print('Invalid option')

二、元组

元组一旦创建不能修改,所以又叫只读列表。

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

元组定义:names=('Jim','Lucy')

三、字典

字典是一种Key-value的数据类型,是无序的。

1、字典相关操作

#字典定义 :
info={'stu001':'Lily','stu002':'Jack','stu003':'John',
}
print(info)
print(info['stu002']) #打印输出stu002的值
info["stu002"]="张三" #修改值
info["stu004"]="HeQian" #新增
#del info #删除字典info
del info["stu001"]  #删除指定值
print("操作后的字典>>>",info)b={'stu001':"yanlin",1:3,2:5}
info.update(b)#更新字典
print("更新后的字典>>>",info)c=info.fromkeys([6,7,8],"test")#初始化新字典,并给每个key赋值test
print("初始化后的字典>>>",c)
print(info.items())#字典转成列表c=dict.fromkeys([6,7,8],[1,{"name":"Micle"},234])#初始化新字典,三个key将共享一个值
print(c)
c[7][1]['name']="Cherry"#修改字典值
print(c)print("--------字典循环 ------")
for i in info:print(i,info[i])#推介使用此方法循环
print("---------")for k,v in info.items():print(k,v)

结果:

{'stu003': 'John', 'stu002': 'Jack', 'stu001': 'Lily'}
Jack
操作后的字典>>> {'stu003': 'John', 'stu002': '张三', 'stu004': 'HeQian'}
更新后的字典>>> {1: 3, 'stu002': '张三', 'stu001': 'yanlin', 'stu004': 'HeQian', 'stu003': 'John', 2: 5}
初始化后的字典>>> {8: 'test', 6: 'test', 7: 'test'}
dict_items([(1, 3), ('stu002', '张三'), ('stu001', 'yanlin'), ('stu004', 'HeQian'), ('stu003', 'John'), (2, 5)])
{8: [1, {'name': 'Micle'}, 234], 6: [1, {'name': 'Micle'}, 234], 7: [1, {'name': 'Micle'}, 234]}
{8: [1, {'name': 'Cherry'}, 234], 6: [1, {'name': 'Cherry'}, 234], 7: [1, {'name': 'Cherry'}, 234]}
--------字典循环 ------
1 3
stu002 张三
stu001 yanlin
stu004 HeQian
stu003 John
2 5
---------
1 3
stu002 张三
stu001 yanlin
stu004 HeQian
stu003 John
2 5

2、字典嵌套

av_catalog = {"欧美":{"www.youporn.com": ["很多免费的,世界最大的","质量一般"],"www.pornhub.com": ["很多免费的,也很大","质量比yourporn高点"],"letmedothistoyou.com": ["多是自拍,高质量图片很多","资源不多,更新慢"],"x-art.com":["质量很高,真的很高","全部收费,屌比请绕过"]},"日韩":{"tokyo-hot":["质量怎样不清楚,个人已经不喜欢日韩范了","听说是收费的"]},"大陆":{"1024":["全部免费,真好,好人一生平安","服务器在国外,慢"]}
}av_catalog["大陆"]["1024"][1] += ",可以用爬虫爬下来"#修改内容
print(av_catalog["大陆"]["1024"]) #打印输出被修改的内容
av_catalog.setdefault("taiwan",{"www.baidu.com":[1,2]}) #新增字典元素
print(av_catalog)
av_catalog.setdefault("大陆",{"www.baidu.com":[1,2]})
print(av_catalog)

结果:

['全部免费,真好,好人一生平安', '服务器在国外,慢,可以用爬虫爬下来']
{'日韩': {'tokyo-hot': ['质量怎样不清楚,个人已经不喜欢日韩范了', '听说是收费的']}, '大陆': {'1024': ['全部免费,真好,好人一生平安', '服务器在国外,慢,可以用爬虫爬下来']}, 'taiwan': {'www.baidu.com': [1, 2]}, '欧美': {'www.youporn.com': ['很多免费的,世界最大的', '质量一般'], 'letmedothistoyou.com': ['多是自拍,高质量图片很多', '资源不多,更新慢'], 'x-art.com': ['质量很高,真的很高', '全部收费,屌比请绕过'], 'www.pornhub.com': ['很多免费的,也很大', '质量比yourporn高点']}}
{'日韩': {'tokyo-hot': ['质量怎样不清楚,个人已经不喜欢日韩范了', '听说是收费的']}, '大陆': {'1024': ['全部免费,真好,好人一生平安', '服务器在国外,慢,可以用爬虫爬下来']}, 'taiwan': {'www.baidu.com': [1, 2]}, '欧美': {'www.youporn.com': ['很多免费的,世界最大的', '质量一般'], 'letmedothistoyou.com': ['多是自拍,高质量图片很多', '资源不多,更新慢'], 'x-art.com': ['质量很高,真的很高', '全部收费,屌比请绕过'], 'www.pornhub.com': ['很多免费的,也很大', '质量比yourporn高点']}}

3、三级菜单的实现

data = {"北京":{"朝阳":{"yi":['炸鸡','汉堡','03'],"er":['可乐','雪碧']},"昌平":{"san":['06','益达','023'],"si":['米饭','玉米']},},"四川":{"成都": {"双流": ['肥肠粉', '麻辣烫'],"新都": ['烧烤', '卤鸡脚']},"绵阳": {"wu": ['啤酒', '香槟', '鸭脖'],"liu": ['柠檬', '橘子']},},"安徽":{"合肥": {"qi": ['011', '042', '063'],"ba": ['104', '105']},"黄山": {"jiu": ['066', '07', '033'],"shi": ['304', '025']}}
}
ch1=False
while  not ch1:for i in data:print(i)choice1=input('>>>:')if choice1 in data:while not ch1:for i2 in data[choice1]:print("\t",i2)choice2 = input('>>>:')if choice2 in data[choice1]:while not ch1:for i3 in data[choice1][choice2]:print("\t\t",i3)choice3 = input('>>>:')if choice3 in data[choice1][choice2]:for i4 in data[choice1][choice2][choice3]:print("\t\t\t", i4)choice4=input('已经是最后一层,按b返回到上一级>>>:')if choice4=="b":passelif choice4=="q":ch1=Trueif choice3 == "b":breakelif choice3 == "q":ch1 = Trueif choice2 == "b":breakelif choice2 == "q":ch1 = True

四、集合

集合是一个无序的、不重复的数据组合。

list1=[1,4,5,6,3,5,3,6] #定义一个列表
list1=set(list1) #变成集合,去重
list2=set([3,5,33,67,8,6])
list3=set([3,5,6])
list4=set([4,2])
print(list1,type(list1))print(list1.intersection(list2))#取两个集合的交集
print(list1.union(list2))#取并集
print(list1.difference(list2))#取差集,即在list1中有的,在list2中没有的
print(list1.issubset(list2))#子集
print(list1.issuperset(list2))
print(list3.issubset(list1))#list3是list1的子集
print(list1.symmetric_difference(list2))#对称差集,即取双方互相没有的值
print("----------")print(list2.isdisjoint(list4))#判断是否有交集
print(list1 & list2)#交集
print(list2 | list1)#并集
print(list1 - list2)#差集
print(list1 ^ list2)#对称差集list4.add(78)#添加一个值
list4.update([00,22])#添加多个值
list4.remove(2)#删除
print(list4)
print(list1.pop())#删除任意一个值,并返回删除的值
print(list2.discard("34"))#删除指定值,若不存在该值,系统不会报错,有别于remove

运行结果:

{1, 3, 4, 5, 6} <class 'set'>
{3, 5, 6}
{1, 33, 3, 4, 5, 6, 67, 8}
{1, 4}
False
False
True
{33, 1, 67, 4, 8}
----------
True
{3, 5, 6}
{33, 1, 67, 3, 5, 6, 4, 8}
{1, 4}
{33, 1, 67, 4, 8}
{0, 4, 78, 22}
1
None

转载于:https://www.cnblogs.com/yanlin-10/p/7222918.html

Python基础之列表、元组、字典、集合的使用相关推荐

  1. python列表元组字典集合实验心得_python学习小总结(列表、元组、字典、集合、字符串)...

    ---恢复内容开始--- 一.列表(list) 1.添加 append():追加,在列表末尾添加元素. 列表名.append(添加的元素) extend():扩展,在列表末尾添加元素. 列表名.ext ...

  2. Day2 - Python基础2 列表、字典、集合 --转自金角大王

    Day2 - Python基础2 列表.字典.集合 --转自金角大王 Posted on 2018-01-24 13:23 Byd_lei 阅读(41) 评论(0)  编辑 收藏 本节内容 列表.元组 ...

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

    参考文章:python中列表 元组 字典 集合的区别

  4. python_列表——元组——字典——集合

    列表--元组--字典--集合: 列表: # 一:基本使用# 1.用途:存放多个值 # 定义方式:[]内以逗号为分隔多个元素,列表内元素无类型限制# l=['a','b','c'] #l=list([' ...

  5. python列表添加元素的三种方法定义集合数据对象_(1) List,tuple,dictionary,Python语法基础集,一,之,列表,元组,字典,集合...

    Python序列(列表.元组.字典.集合) 一.列表(List)与列表推导式 (一)列表(list) 1.列表是Python内置 可变序列 (列表中元素可增加删除或修改): 2.列表元素放在一对中括号 ...

  6. Python列表/元组/字典/集合详解

    本文是对Python中的列表.元组.字典.集合知识的梳理总结,将Python的重要知识点梳理成条,通过一个简单的员工管理系统(EMS)实战,可以深入的了解Python的基本知识.本文基本上涵盖了在日常 ...

  7. Day2 - Python基础2 列表、字典、集合

    Python之路,Day2 - Python基础2 本节内容 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1. 列表.元组操作 列表是我们最以后最常用的数据类型之一,通过 ...

  8. Python 列表元组字典集合

    列表(list) 有序性,可存储任意类型的值 通过偏移存取,支持索引来读取元素,第一个索引为0 ,倒数第一个索引为-1 可变性 ,支持切片.合并.删除等操作 可通过索引来向指定位置插入元素 可通过po ...

  9. python入门——列表+元组+字典+集合

    列表 列表是最常用的python数据类型,它可以作为一个方括号内的逗号分隔值出现. 列表的数据项不需要具有相同的类型 1.列表嵌套(相当于二维数组) a=["b",'c','d'] ...

  10. python变量 数据类型 列表 元组 字典

    python基础语法2 变量 数据类型与类型转换 列表 添加列表元素 修改元素 删除列表元素 组织列表 创建数值列表 操作列表 元组 元组转列表 字典 创建字典 列表取值 字典删除增加修改 变量 变量 ...

最新文章

  1. [问题解决]NotImplementedError 错误原因:子类没有实现父类要求一定要实现的接口
  2. java输出image_java如何生成imagecode
  3. Spring Boot Serverless 实战系列“部署篇” | Mall 应用
  4. shell编程之case语句及函数
  5. linux 复制分区文件,dd复制分区后目标分区的大小变成原分区了
  6. 一个导出类的内部函数的dll
  7. linux的dhcp配置命令,Linux下DHCP配置命令
  8. OSPF NSSA 默认路由的问题
  9. 车机没有carlife可以自己下载吗_雷克萨斯NX 原车carlife转换无线carplay
  10. 深度解读互联网+供应链金融八大模式
  11. High-Sierra,MacOS10.13,增加IntelHD3000显存的方法
  12. BAPose: Bottom-Up Pose Estimation with Disentangled Waterfall Representations阅读笔记
  13. 虚幻C++入门个人笔记(4)——UMG、网络
  14. oracle SQL先按字母排序再按数字排序
  15. 计算机二级怎么样分屏方便,全国计算机等级考试二级教程
  16. 论文阅读:GeoTransformer
  17. 轻量应用服务器 饥荒,饥荒服务端世界设置生成
  18. MMSC BAPI/自动扩充库位
  19. 《被讨厌的勇气》- 一切烦恼都来自人际关系
  20. Android原生音频变调代码流程分析

热门文章

  1. 音乐治疗在计算机的应用,音乐治疗中虚拟现实(VR)技术的应用
  2. 车载以太网交换机功能和应用案例汇总, 适用于AVB/TSN, 802.1AS(gPTP时钟同步)
  3. 交换机 VLAN 端口类型
  4. 【和小冉一起学习c++】踏入c++的大门~第一个c++程序
  5. 我的专业我的梦作文计算机,我的创新我的梦优秀作文
  6. 基于迭代情绪交互网络的对话情绪识别
  7. java httpclient 伪造ip_使用CURL伪造来源网址与IP
  8. python从0开始学编程第二天第19讲_少儿Python编程_第十九讲 数据分析网站
  9. 基于networkx的《人民的名义》人物关系图
  10. 解决MySQL数据库登录报错原因以及修改MySQL数据库登录密码;