Python元组,列表,字典,集合
1.元组
元组是有序的,只有index和count两种方法,一看到元组,就提醒是不可更改的
names = ('wll', 'ly', 'jxx', 'syq')
(1)index方法
print(names.index('ly'))  #找'ly'在元组中的第几个,从0开始
#输出结果
1
(2)count方法
print(names.count('wll'))  #计数,'wll'在元组中有几个
#输出
1
(3)元组的输出
print(names) #输出元组
print(names[0]) #输出元组的第一个元组,下标从0开始 #输出
('wll', 'ly', 'jxx', 'syq')
wll
#逐个输出元组中的每个元素
for i in names:
print(i)
print("------------------")
for i in range(len(names)):
print(names[i]) #输出
wll
ly
jxx
syq
------------------
wll
ly
jxx
syq
2.列表
列表是有序的
names = ["WuLanLan", "LuYue", "JiangXiaoXia", "ShenYuQian", "WangRong"]
(1)增
names.append("WangRong")  # 插在最后一个
print(names)
names.insert(1, "ShiYuTing")  # 插在第二个的位置上
print(names)
#输出
['WuLanLan', 'LuYue', 'JiangXiaoXia', 'ShenYuQian', 'WangRong', 'WangRong']
['WuLanLan', 'ShiYuTing', 'LuYue', 'JiangXiaoXia', 'ShenYuQian', 'WangRong', 'WangRong']
(2)删
names.remove("WangRong")  #如果有多个,只删除一个
print(names)
del names[2]  #删除列表中第三个元素,下标是2,从零开始
print(names)
names.pop()  # 默认不输入下标,则删除最后一个值
print(names)
#输出
['WuLanLan', 'LuYue', 'JiangXiaoXia', 'ShenYuQian']
['WuLanLan', 'LuYue', 'ShenYuQian']
['WuLanLan', 'LuYue']
(3)改
names[2] = "Jiangxiaoxia" #把第三个元素改为‘Jiangxiaoxia’
print(names) #输出
['WuLanLan', 'LuYue', 'Jiangxiaoxia', 'ShenYuQian', 'WangRong']
(4)查
print(names)
print(names[0]) # 切片,输出第一个元素
print(names[1:3]) # 切片,左闭右开,输出从第二个到第三个
print(names[3]) # 切片,输出第四个元素
print(names[-1]) # 切片,-1表示最后一个元素
print(names[-3:-1]) # 切片,从左往右数,不能从右往左数
print(names[-3:]) # 切片,数到最后一个,冒号后面忽略
print(names[:3]) # 切片,第一个开始数,冒号前面可以忽略,相当于[0:3]
print(names[0:-1:2]) # 切片,从0开始到最后一个,步长为2
print(names[::2]) # 切片,从0开始到最后一个,步长为2
print(names[:]) # 切片,从0开始到最后一个,默认步长为1 #输出
['WuLanLan', 'LuYue', 'JiangXiaoXia', 'ShenYuQian', 'WangRong']
WuLanLan
['LuYue', 'JiangXiaoXia']
ShenYuQian
WangRong
['JiangXiaoXia', 'ShenYuQian']
['JiangXiaoXia', 'ShenYuQian', 'WangRong']
['WuLanLan', 'LuYue', 'JiangXiaoXia']
['WuLanLan', 'JiangXiaoXia']
['WuLanLan', 'JiangXiaoXia', 'WangRong']
['WuLanLan', 'LuYue', 'JiangXiaoXia', 'ShenYuQian', 'WangRong']
(5)其他方法
print(names.index("WuLanLan"))  # 索引
print(names[names.index("WuLanLan")])  #WuLanLan是0,输出列表里0的元素,还是WuLanLan
#输出
0
WuLanLan
print(names.count("WangRong"))  # 计数,列表里WangRong的个数
#输出
1
names.clear() # 清除
print(names) #输出
[]
names.reverse() # 反转
print(names) #输出
['WangRong', 'ShenYuQian', 'JiangXiaoXia', 'LuYue', 'WuLanLan']
names.sort() # 排序,按照ASCII码排序
print(names) #输出
['JiangXiaoXia', 'LuYue', 'ShenYuQian', 'WangRong', 'WuLanLan']
names2 = [1, 2, 3, 4]
names.extend(names2) # 合并
print(names) #输出
['JiangXiaoXia', 'LuYue', 'ShenYuQian', 'WangRong', 'WuLanLan', 1, 2, 3, 4]
# 循环输出列表
for i in names:
print(i) #输出
JiangXiaoXia
LuYue
ShenYuQian
WangRong
WuLanLan
import copy
names = ["WuLanLan", "LuYue", ["Tom", "Jack"], "JiangXiaoXia", "ShenYuQian", "WangRong"]
names2 = copy.deepcopy(names) # 潜copy,指向同一块地址
print(names)
print(names2)
names[3] = "沈玉倩"
names[2][0] = "Rose"
print(names) #输出
['WuLanLan', 'LuYue', ['Tom', 'Jack'], 'JiangXiaoXia', 'ShenYuQian', 'WangRong']
['WuLanLan', 'LuYue', ['Tom', 'Jack'], 'JiangXiaoXia', 'ShenYuQian', 'WangRong']
['WuLanLan', 'LuYue', ['Rose', 'Jack'], '沈玉倩', 'ShenYuQian', 'WangRong']
3.字典
字典 key-value 是无序的
info = {"": "Wulanlan",
        "": "Luyue",
        "": "Shenyuquan",
        "": "Jiangxiaoxia"
}
(1)输出字典里的元素
for i in info: # 建议用这种
print(i, info[i])
print("-------------------")
for k, v in info.items(): # 不建议用这种,数据量大的话很崩溃
print(k, v) #输出
29 Wulanlan
13 Luyue
18 Shenyuquan
06 Jiangxiaoxia
-------------------
29 Wulanlan
13 Luyue
18 Shenyuquan
06 Jiangxiaoxia
print(sorted(info.items(), key=lambda d: d[0], reverse=True)) # 根据key的值排序后倒序输出字典里的元素 #输出
[('', 'Wulanlan'), ('', 'Shenyuquan'), ('', 'Luyue'), ('', 'Jiangxiaoxia')]
print(info.items()) # 把字典转成列表
info_3 = dict.fromkeys([1, 2, 3], [1, {"name": "wll"}, 111]) # 也是一种创建字典
print(info_3)
info_3[2][1]["name"] = "bbb" # 你以为只改了一个,其实都改了
print(info_3) #输出
dict_items([('', 'Wulanlan'), ('', 'Luyue'), ('', 'Shenyuquan'), ('', 'Jiangxiaoxia')])
{1: [1, {'name': 'wll'}, 111], 2: [1, {'name': 'wll'}, 111], 3: [1, {'name': 'wll'}, 111]}
{1: [1, {'name': 'bbb'}, 111], 2: [1, {'name': 'bbb'}, 111], 3: [1, {'name': 'bbb'}, 111]}
(2)改
info[""] = "吴兰兰"
print(info)
info.update(info_2) # 有的更新,没有的创建
print(info) #输出
{'': '吴兰兰', '': 'Luyue', '': 'Shenyuquan', '': 'Jiangxiaoxia'}
{'': '吴兰兰', '': 'LuYue', '': 'Shenyuquan', '': 'Jiangxiaoxia', '': 'Denglei', '': 'Huaxiaofeng'}
(3)增
info[""] = "Wangrong"
print(info) #输出
{'': 'Wulanlan', '': 'Luyue', '': 'Shenyuquan', '': 'Jiangxiaoxia', '': 'Wangrong'}
(4)删
info.pop("")  # 标准删
print(info)
del info[""]
print(info)
info.popitem()  # 随机删
print(info)
#输出
{'': 'Luyue', '': 'Shenyuquan', '': 'Jiangxiaoxia'}
{'': 'Shenyuquan', '': 'Jiangxiaoxia'}
{'': 'Shenyuquan'}
(5)查
print(info[""])  # 不建议用这种方法,除非很确定字典里有这个键值
print(info.get(""))  # 一般用这种方法
print("" in info)  # info.has_key("29")
#输出
Wulanlan
Wulanlan
True
(6)多级嵌套
 list_move = {"电影": {
                     "美国": ["恐怖游轮", "记忆碎片", "穆赫兰道"],
                     "中国": ["唐人街探案", "杀破狼", "使徒行者"]
           }, "电视剧": {
                     "美国": ["城堡岩", "神探夏洛克", "假面真情"],
                     "中国": ["暗黑者", "武林外传", "无证之罪"]
           }, "动漫": {
                     "日本": ["名侦探柯南", "进击的巨人", "灌篮高手"],
                     "中国": ["画江湖系列", "狐妖小红娘", "全职高手"]
           }
 }
 list_move["动漫"]["中国"][1] = "斗破苍穹"
 print(list_move)
 list_move.setdefault("小说", {"中国": [1,2]})  # 在字典里找"小说",如果能取到,返回,如果取不到,就创建一个新的key,value值为逗号后面的
 print(list_move)
 #输出
 {'电影': {'美国': ['恐怖游轮', '记忆碎片', '穆赫兰道'], '中国': ['唐人街探案', '杀破狼', '使徒行者']}, '电视剧': {'美国': ['城堡岩', '神探夏洛克', '假面真情'], '中国': ['暗黑者', '武林外传', '无证之罪']}, '动漫': {'日本': ['名侦探柯南', '进击的巨人', '灌篮高手'], '中国': ['画江湖系列', '斗破苍穹', '全职高手']}}
 {'电影': {'美国': ['恐怖游轮', '记忆碎片', '穆赫兰道'], '中国': ['唐人街探案', '杀破狼', '使徒行者']}, '电视剧': {'美国': ['城堡岩', '神探夏洛克', '假面真情'], '中国': ['暗黑者', '武林外传', '无证之罪']}, '动漫': {'日本': ['名侦探柯南', '进击的巨人', '灌篮高手'], '中国': ['画江湖系列', '斗破苍穹', '全职高手']}, '小说': {'中国': [1, 2]}}
4.集合
集合,无序的,去重
list_1 = [1, 1, 2, 3, 4, 5, 6, 8, 2, 5]
list_1 = set(list_1)
list_2 = set([3, 22, 3, 5, 10, 12])
print(list_1, type(list_1), list_2) #打印集合1,1的类型,集合2 #输出
{1, 2, 3, 4, 5, 6, 8} <class 'set'> {3, 5, 10, 12, 22} #list_1的类型是set,集合,集合是自动去重的
(1)交集
print(list_1.intersection(list_2)) #交集 #输出
{3, 5}
print(list_1 & list_2) #交集 #输出
{3, 5}
(2)并集
print(list_1.union(list_2)) #并集 #输出
{1, 2, 3, 4, 5, 6, 8, 10, 12, 22}
print(list_1 | list_2) #并集 #输出
{1, 2, 3, 4, 5, 6, 8, 10, 12, 22}
(3)差集
print(list_1.difference(list_2)) # 差集,在1里面不在2里面 print(list_2.difference(list_1)) # 差集,在2里面不在1里面 #输出
{1, 2, 4, 6, 8} {10, 12, 22}
print(list_1 - list_2) # 差集,在1里不在2里 print(list_2 - list_1) # 差集,在2里不在1里 #输出
{1, 2, 4, 6, 8} {10, 12, 22}
(4)对称差集
print(list_1.symmetric_difference(list_2)) # 对称差集,去掉1和2的交集之后再合并 #输出
{1, 2, 4, 6, 8, 10, 12, 22}
print(list_1 ^ list_2) # 对称差集,去掉1和2的交集之后再并 #输出
{1, 2, 4, 6, 8, 10, 12, 22}
(5)子集
list_3 = set([1, 2, 3])
print(list_3.issubset(list_1)) #3是不是1的子集,是则返回True,否则返回False
print(list_1.issuperset(list_3)) #1是不是3的父子集,即3是不是1的子集 #输出
True
True
(6)其他方法
list_3 = set([1, 2, 3])
list_4 = set([4, 5, 6])
print(list_3.isdisjoint(list_4)) # 3和4没有交集返回为True,有交集返回为False #输出
True
# 添加一项
list_1.add(66)
print(list_1) #输出
{1, 2, 3, 4, 5, 6, 66, 8} #集合是无序的,添加到哪个位置不知道
# 添加多项
list_1.update([88, 2333])
print(list_1) #输出
{1, 2, 3, 4, 5, 6, 66, 8, 88, 2333}
# 删除,删除一项,如果有多个1怎么办删哪个,集合天生去重呀!!!
list_1.remove(1)
print(list_1) #输出
{2, 3, 4, 5, 6, 8}
# 长度
print(len(list_1)) #输出
7
# 1在集合里吗
print(1 in list_1) # 1不在集合里吗
print(1 not in list_1) #输出
True False
# 潜复制
list_5 = list_1.copy()
print(list_5) #输出
{1, 2, 3, 4, 5, 6, 8}
# 删除任一一个元素,并且将那个元素返回
print(list_1.pop(), list_1) #输出
1 {2, 3, 4, 5, 6, 8}
# 删除,remove删除不存在的会报错,discard只返回None
print(list_1.discard(6666), list_1) #输出
None {2, 3, 4, 5, 6, 8}
Python元组,列表,字典,集合的更多相关文章
- python中元组/列表/字典/集合
		
转自:https://blog.csdn.net/lobo_seeworld/article/details/79404566
 - python 元组 列表 字典
		
type()查看类型 //取整除 **幂 成员运算符: in x在y序列中,就返回true 反之 not in 身份运算符: is is not 逻辑运算符 and or not 字符编码 问题 ...
 - Python 高效编程技巧实战(2-1)如何在列表,字典, 集合中根据条件筛选数据
		
Python 高效编程技巧实战(2-1)如何在列表,字典, 集合中根据条件筛选数据 学习目标 1.学会使用 filter 借助 Lambda 表达式过滤列表.集合.元组中的元素: 2.学会使用列表解析 ...
 - python :列表 字典 集合 类 ----局部变量可以改全局变量
		
#列表 字典 集合 类 ----局部变量可以改全局变量,除了整数和字符串 names=["alex","jack","luck"] def ...
 - python基础一 -------如何在列表字典集合中根据条件筛选数据
		
如何在列表字典集合中根据条件筛选数据 一:列表 先随机生成一个列表,过滤掉负数 1,普通for循环迭代判断 2,filter()函数判断,filter(函数,list|tuple|string) fi ...
 - python字符串/列表/字典互相转换
		
python字符串/列表/字典互相转换 目录 字符串与列表 字符串与字典 列表与字典 字符串与列表 字符串转列表 1.整体转换 str1 = 'hello world' print(str1.spli ...
 - python元组 列表 (取值、替换、插入、添加、删除)
		
1.元组 列表 字典 元组( 元组是不可变的) hello = (1,2,3,4,5) type(hello)
 - Python列表,元组,字典,集合
		
列表 Python中列表是可变的,这是它区别于字符串和元组的最重要的特点,一句话概括即:列表可以修改,而字符串和元组不能. 列表追加数据的方法:append(),extend(数组),insert(位 ...
 - Python之旅Day2  元组 字符串 字典 集合
		
元组(tuple) 元组其实跟列表差不多,也是存一组数,与列表相比,元组一旦创建,便不能再修改,所以又叫只读列表. 语法: names = ("Wuchunwei","Y ...
 - Python基础2 列表 字典 集合
		
本节内容 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1. 列表.元组操作 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 定义列表 ...
 
随机推荐
- maven课程 项目管理利器-maven 1-2maven介绍和环境搭建
			
maven简介: Maven是基于项目对象模型(POM),通过一小段描述信息来管理项目的构建.报告和文档的软件项目管理工具. 1.1 Maven安装文件夹的结构 bin 目录放置包含mvn的运行脚本 ...
 - hibernate课程 初探一对多映射2-3 创建hibernateUtil工具类
			
本节主要内容:创建hibernateUtil工具类:demo demo: HibernateUtil.java package hibernate_001; import org.hibernate. ...
 - php静态变量static
			
静态变量 function test() { static $a = 0; echo $a; $a++; } test(); test(); test();
 - C++ Knowledge series Layering
			
Programming has its own methodology. Layering is everywhere in real life,this why the pruchase and s ...
 - Thymeleaf基础知识
			
Thymeleaf是一个Java类库,它是一个xml/xhtml/html5的模板引擎,可以作为MVC的Web引用的View层. Thymeleaf还提供了额外的模块与SpringMVC集成,因此推荐 ...
 - 【Microsoft Azure学习之旅】消息服务Service Bus的学习笔记及Demo示例
			
今年项目组做的是Cloud产品,有幸接触到了云计算的知识,也了解并使用了当今流行的云计算平台Amazon AWS与Microsoft Azure.我们的产品最初只部署在AWS平台上,现在产品决定同时支 ...
 - eclipse 创建 user library 方法
			
1.Window - Preferences - Java - Build Path - User Libraries 2.新建 UserLibraries 3. 4.重复上一步依次添加需要的jar文 ...
 - MySQL 开机自启动
			
MySQL 开机自启动 chkconfig add mysqld 或者 echo "/usr/local/mysql/bin/mysqld_safe --defaults-file=/etc ...
 - 温故而知新:Asp.Net中如何正确使用Session
			
原文链接作者:菩提树下的杨过出处:http://yjmyzz.cnblogs.com Asp.Net中的Session要比Asp中的Session灵活和强大很多,同时也复杂很多:看到有一些Asp.Ne ...
 - SQL Server 2008 R2 附加数据库 “尝试打开或创建物理文件 拒绝访问”的解决办法
			
其实是来自一篇SQL Server 2005同样错误的帖子,不过试了在SQL Server 2008 R2下面也有效,记录一下. 解决方法: 在所有程序—Microsoft SQL Server 20 ...