【python】特色数据类型——元组(列表、元组、字典、集合)(6)
2018-02-05 21:02
811 查看
参考 Python从零开始系列连载,by 王大伟 Python爱好者社区
参考 Hellobi Live | 1小时破冰入门Python
参考 《简明python教程》
参考 《小甲鱼零基础入门学python》
Note: 更多连载请查看【python】
元组
1 元组的创建
2 元组的索引
3 元组的切片
4 元组的连接
5 元组的复制
6 元组对内部元素的循环
7 查找元组的元素
8 元组的删除
9 元组的最大值、最小值
10 元组的长度
11 元组的元素的不变性
12 元组与列表之间的转换
13 元组与for…in的结合
14 元组有像列表一样的推导式吗?
一诺千金, 不可改变
元组是Python的另一种特色的数据类型,元组和列表是相似的,可以存储不同类型的数据。但是!划重点:元组是不可改变的,创建后就不能做任何修改操作了
下面是列表的一些常用的方法,圈出来部分是元组可以使用的
小明:废话,当然是[]和()
其实不是
元组最大的特点是,(逗号)
创建一个元组的时候,必须加逗号,不然会认为是整型
结果为
结果为
元组支持嵌套
结果为
创建空元组
结果为
我们在创建元组的时候,其实是在进行元组打包
结果为
要写完整左边的,一 一对应好,否者报错
结果报错
结果为
结果为
同列表
结果为:
结果为
结果为
结果为
结果报错
结果为
结果为
空元素的元组长度为0
结果为0
• pop()
• append()
• extend()
• remove()
• index()
在元组中都不可用
结果报错
结果为
如果要删去相同的元素,可以在最后加一个约束条件
结果为
下面看看一般的方法
结果同上
那么问题来了
小莫:元组操作方法比列表少?为啥还要学这个!感觉没啥优势!
小苏:小莫啊!元组在某些方面有优势的:
元组的运算速度比列表快,如果你经常要遍历一个序列,且不需要修改内容,用元组比列表好
元组相当于给数据加了保护(不可修改),有些场合需要这种不可修改的内容,想想我们生活中的很多通知说明等pdf文件不就是只读不可写么,能理解了吧。
小莫:震惊!元组在这种情况下竟然能将劣势转为优势
结果为
是生成器,amazing
访问一下下
结果像挤牙膏一样,一点一点出来
Note: 更多连载请查看【python】
参考 Hellobi Live | 1小时破冰入门Python
参考 《简明python教程》
参考 《小甲鱼零基础入门学python》
Note: 更多连载请查看【python】
目录
目录元组
1 元组的创建
2 元组的索引
3 元组的切片
4 元组的连接
5 元组的复制
6 元组对内部元素的循环
7 查找元组的元素
8 元组的删除
9 元组的最大值、最小值
10 元组的长度
11 元组的元素的不变性
12 元组与列表之间的转换
13 元组与for…in的结合
14 元组有像列表一样的推导式吗?
元组
上了枷锁的列表一诺千金, 不可改变
元组是Python的另一种特色的数据类型,元组和列表是相似的,可以存储不同类型的数据。但是!划重点:元组是不可改变的,创建后就不能做任何修改操作了
下面是列表的一些常用的方法,圈出来部分是元组可以使用的
1 元组的创建
莫莫问:元组和列表最大的区别是什么?小明:废话,当然是[]和()
其实不是
元组最大的特点是,(逗号)
创建一个元组的时候,必须加逗号,不然会认为是整型
tuple1 = 1,#特殊情况:创建一个元素的元组时必须加逗号 print (tuple1) print (type(tuple1)) tuple2 = (1,) print (tuple2) print (type(tuple2)) tuple3 = (1) print (tuple3) print (type(tuple3))
结果为
(1,) <class 'tuple'> (1,) <class 'tuple'> 1 <class 'int'>
a = 1,2,3#创建元组,用逗号隔开的就是元组,但是为了美观和代码可读性,我们一般加小括号 print (a) type(a)
结果为
(1, 2, 3) tuple
元组支持嵌套
tuple1 = ('a',1,2.33,[1,'a'],(1,3,5),{'a':1}) tuple1#注意:上面的元组包含了列表,所以元组允许嵌套
结果为
('a', 1, 2.33, [1, 'a'], (1, 3, 5), {'a': 1})
创建空元组
tuple1 = ()#创建空元组 tuple1
结果为
()
我们在创建元组的时候,其实是在进行元组打包
tuple1 = 1,2,3,4 #我们在创建元组的时候,其实是在进行元组打包 a,b,c,d = tuple1 #元组解包,将等号右侧的元组中的元素按顺序依次赋值给等号左边的变量 print(a,b,c,d)
结果为
1 2 3 4
要写完整左边的,一 一对应好,否者报错
a,b,c = tuple1 #要写完整左边的,一 一对应好
结果报错
ValueError: too many values to unpack (expected 3)
2 元组的索引
同列表tuple1 = (0,1,2,3,4,5,6,7,8) print (tuple1[3]) #索引 print (tuple1[-2]) #索引
结果为
3 7
3 元组的切片
同列表tuple1 = (0,1,2,3,4,5,6,7,8) print (tuple1[1:3]) #切片 print (tuple1[5:3:-1]) #切片
结果为
(1, 2) (5, 4)
4 元组的连接
可以结合切片和连接,对元组进行所谓的添加和删除同列表
tuple1 = (0,1,2) tuple2 = (3,4,5) print (tuple1 + tuple2) #连接
结果为:
(0, 1, 2, 3, 4, 5)
5 元组的复制
同列表tuple1 = (0,1,2) tuple1*3 #复制
结果为
(0, 1, 2, 0, 1, 2, 0, 1, 2)
6 元组对内部元素的循环
同列表tuple1 = (0,1,2) for i in tuple1: #对内部元素循环 print(i)
结果为
0 1 2
7 查找元组的元素
同列表tuple1 = (0,1,2) print (2 in tuple1) #查找元组中是否有某元素 print (3 in tuple1)
结果为
True False
8 元组的删除
同列表tuple1 = (0,1,2,3,4,5,6,7,8,9,10) del tuple1 #删除元组 tuple1
结果报错
NameError: name 'tuple1' is not defined
9 元组的最大值、最小值
同列表tuple1 = (0,1,2,3,4,5,6,7,8,9,10) print (max(tuple1)) print (min(tuple1))
结果为
10 0
10 元组的长度
同列表tuple1 = (0,1,2,3,4,5,6,7,8,9,10) len(tuple1)#查看元组长度
结果为
11
空元素的元组长度为0
len(())#对空元组执行长度操作,显示长度为0
结果为0
11 元组的元素的不变性
列表中的• pop()
• append()
• extend()
• remove()
• index()
在元组中都不可用
tuple1 = (1,2,3) tuple1[0] = 2 #元组元素不能修改
结果报错
TypeError: 'tuple' object does not support item assignment
12 元组与列表之间的转换
list()和tuple()13 元组与for…in的结合
[(m,n) for m in 'abcd' for n in'abcd']
结果为
[('a', 'a'), ('a', 'b'), ('a', 'c'), ('a', 'd'), ('b', 'a'), ('b', 'b'), ('b', 'c'), ('b', 'd'), ('c', 'a'), ('c', 'b'), ('c', 'c'), ('c', 'd'), ('d', 'a'), ('d', 'b'), ('d', 'c'), ('d', 'd')]
如果要删去相同的元素,可以在最后加一个约束条件
[(m,n) for m in 'abcd' for n in'abcd' if m != n] #如果字符串里有重复的字符,而我们要找不同的字符的排列组合,加条件判断!
结果为
[('a', 'b'), ('a', 'c'), ('a', 'd'), ('b', 'a'), ('b', 'c'), ('b', 'd'), ('c', 'a'), ('c', 'b'), ('c', 'd'), ('d', 'a'), ('d', 'b'), ('d', 'c')]
下面看看一般的方法
#一般方法 list1 = [] for i in 'abcd': for j in 'abcd': if i != j: list1.append((i,j)) list1
结果同上
那么问题来了
小莫:元组操作方法比列表少?为啥还要学这个!感觉没啥优势!
小苏:小莫啊!元组在某些方面有优势的:
元组的运算速度比列表快,如果你经常要遍历一个序列,且不需要修改内容,用元组比列表好
元组相当于给数据加了保护(不可修改),有些场合需要这种不可修改的内容,想想我们生活中的很多通知说明等pdf文件不就是只读不可写么,能理解了吧。
小莫:震惊!元组在这种情况下竟然能将劣势转为优势
14 元组有像列表一样的推导式吗?
把列表推导式中的[]换成()试试tuple1 = (i**2 for i in range(10)) type(tmp)
结果为
generator
是生成器,amazing
访问一下下
for j in range (10): print (tuple1.__next__())
结果像挤牙膏一样,一点一点出来
0 1 4 9 16 25 36 49 64 81
Note: 更多连载请查看【python】
相关文章推荐
- 【python】特色数据类型——字典(列表、元组、字典、集合)(7)
- Python3组合数据类型(元组、列表、集合、字典)语法
- python实操(5):python数据类型及常用操作,数字、字符串、元组、列表、字典、集合
- Python Day2 数据类型: 列表元组和字典
- 兄弟连学python(4)——列表、元祖、字典、集合数据类型介绍
- Python数据类型详解(列表,元组,字典,日期)
- python入门:基础,列表、元组、字典及集合类型
- Python数据类型(元组、列表、字符串、字典)
- Python 3从入门到精通14-常见的数据类型字符串元组,列表,字典
- python 数据类型 -列表-字典-元组-切片-内置方法
- 基本数据类型-集合(set)_上周内容回顾(字符串_数字_列表_元组_字典_集合)
- Python 学习 (一) python的基本数据类型 元组 列表 字典
- 【八】列表、字典、集合、元组间的数据类型转换总结
- 一句python,一句R︱列表、元组、字典、数据类型、自定义模块导入(格式、去重)
- Python基础数据类型-列表(list)和元组(tuple)和集合(set)
- Python之几种重要的基本类型:元组,列表,字典,字符串,集合
- Python基础——原生数据类型(字典,列表,元组,字符串)
- Python 入门学习 -----变量及基础类型(元组,列表,字典,集合)
- python数据类型—列表、元组、字典
- Python 入门学习 -----变量及基础类型(元组,列表,字典,集合)