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元组,列表,字典,集合的更多相关文章

  1. python中元组/列表/字典/集合

    转自:https://blog.csdn.net/lobo_seeworld/article/details/79404566

  2. python 元组 列表 字典

    type()查看类型 //取整除 **幂 成员运算符: in  x在y序列中,就返回true 反之  not in 身份运算符: is is not 逻辑运算符 and or not 字符编码 问题 ...

  3. Python 高效编程技巧实战(2-1)如何在列表,字典, 集合中根据条件筛选数据

    Python 高效编程技巧实战(2-1)如何在列表,字典, 集合中根据条件筛选数据 学习目标 1.学会使用 filter 借助 Lambda 表达式过滤列表.集合.元组中的元素: 2.学会使用列表解析 ...

  4. python :列表 字典 集合 类 ----局部变量可以改全局变量

    #列表 字典 集合 类 ----局部变量可以改全局变量,除了整数和字符串 names=["alex","jack","luck"] def ...

  5. python基础一 -------如何在列表字典集合中根据条件筛选数据

    如何在列表字典集合中根据条件筛选数据 一:列表 先随机生成一个列表,过滤掉负数 1,普通for循环迭代判断 2,filter()函数判断,filter(函数,list|tuple|string) fi ...

  6. python字符串/列表/字典互相转换

    python字符串/列表/字典互相转换 目录 字符串与列表 字符串与字典 列表与字典 字符串与列表 字符串转列表 1.整体转换 str1 = 'hello world' print(str1.spli ...

  7. python元组 列表 (取值、替换、插入、添加、删除)

    1.元组 列表 字典 元组( 元组是不可变的) hello = (1,2,3,4,5) type(hello)

  8. Python列表,元组,字典,集合

    列表 Python中列表是可变的,这是它区别于字符串和元组的最重要的特点,一句话概括即:列表可以修改,而字符串和元组不能. 列表追加数据的方法:append(),extend(数组),insert(位 ...

  9. Python之旅Day2 元组 字符串 字典 集合

    元组(tuple) 元组其实跟列表差不多,也是存一组数,与列表相比,元组一旦创建,便不能再修改,所以又叫只读列表. 语法: names = ("Wuchunwei","Y ...

  10. Python基础2 列表 字典 集合

    本节内容 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1. 列表.元组操作 列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储.修改等操作 定义列表 ...

随机推荐

  1. 上下文ac获取为null,SpringContextUtil配置位置,以及各配置xml的加载顺序有讲究

    发现一个有趣的现象,一般job都会在执行前去初始化一次ac,而任务监视器SupervisorQueueJob不会,因此启动时初始化ac为null,SupervisorQueueJob会始终无法获取上下 ...

  2. sass文件转css时注释虽然支持中文,但是出现乱码的解决方法

    sass文件转css时注释虽然支持中文,但是出现乱码的解决方法 Scss 注释中文报错问题(windows系统, 已解决)找到ruby的安装目录,里面也有sass模块,类似这样样的路径:F:\Prog ...

  3. CSS改变placeholder的颜色

    :-moz-placeholder { /* Mozilla Firefox 4 to 18 */ color: #a1a1a1; } ::-moz-placeholder { /* Mozilla ...

  4. Cloud Computing

    More numbers, More power. We waste much more every day. Everything can be connectible through specia ...

  5. Android Studio 导入 AOSP 源码

    有了 AOSP 源码,接下来就是如何看了,可以直接文本看,可以用 Source Insight,我当然选择 Android Studio,Android Studio 是我熟悉且十分强大的工具.问题来 ...

  6. springboot利用mail配置包,实现邮件发送

    了解邮件发送与接收的过程: A->S1->S2->B 1.计算机A通过SMTP协议将邮件发送到服务器S1上: 2.服务器S1再发送到服务器S2: 3.计算机B通过POP3协议接收服务 ...

  7. LDAP 在ubuntu14.04下的安装配置install and configure

    https://help.ubuntu.com/lts/serverguide/openldap-server.html if error occurs in reinstall, try this: ...

  8. 使用selenium grid与BrowserMobProxyServer联合使用

    背景:项目主要是做埋点数据,要使用 BrowserMobProxyServer,它相当于做一个代理,在你访问一个网页时,通过代理,获取打开网页的数据,对比你需要对比数据,所以这个工具提供获取页面请求的 ...

  9. UML总结:UML用于建模描述结构和行为

    UML有3种基本的构造块:组件.关系和图 我们将 UML 中的图分为两大类: 结构图 行为图 (1)结构建模: 结构建模具有捕捉静态的功能,包括下列各项: 类图 对象图 组件图 部署图 结构模型代表的 ...

  10. B. Qualifying Contest_排序

    B. Qualifying Contest time limit per test 1 second memory limit per test 256 megabytes input standar ...