Python之常用数据类型详解
tuple 元组
1 # 定义
2 temp = (2, ) # 规范定义,单个元素的元组
3 tem = 2, # 可行,但不规范定义
4 tep = () # 空元组
5
6 tp = (1, 'ss', 3.5, [6, 'dd']) # 元组中 可存放任何的 数据类型 int、float、str、bool、字符串、字典、列表等
7 # 通过索引获取元组中的元素
8 print(tp[3]) # 输出:[6, 'dd']
9 print(tp[3][1]) # 输出:'dd'
10 print(tp[::-1]) # 输出:([6, 'dd'], 3.5, 'ss', 1)
元组解包
1 # 元组解包
2 c1, c2, c3, c4 = (3, 'd', 5.6), 7.8, 'ee', 4 < 5
3 print('''
4 c1类型:{},c1 = {}
5 c2类型:{},c2 = {}
6 c3类型:{},c3 = {}
7 c4类型:{},c4 = {}
8 '''.format(type(c1), c1, type(c2), c2, type(c3), c3, type(c4), c4))
9
10 # 输出:
11 c1类型:<class 'tuple'>,c1 = (3, 'd', 5.6)
12 c2类型:<class 'float'>,c2 = 7.8
13 c3类型:<class 'str'>,c3 = ee
14 c4类型:<class 'bool'>,c4 = True
list 列表
1 # 定义
2 li = [1] # 单个元素的列表
3 ls = [1, 'ss', 3.5, [6, 'dd'], 4 < 5] # 字典也可存放任何的数据类型
4
5 #通过索引获取列表中的元素
6 print(ls[3]) # 输出:[6, 'dd']
7 print(ls[3][1]) # 输出:'dd'
8 print(ls[::-2]) # 输出:[True, 3.5, 1]
列表操作
1 name = ['妲己', '安琪拉', '嫦娥', '小乔', '周瑜']
2
3 # append() 列表最后新增1个元素,仅1个参数
4 name.append('高渐离')
5 print(name) #输出:['妲己', '安琪拉', '嫦娥', '小乔', '周瑜', '高渐离']
6
7 # extend() 以元组、列表的形式,可添加多个元素
8 name.extend(['甄姬', '嬴政', '武则天']) # name=['妲己', '安琪拉', '嫦娥', '小乔', '周瑜', '甄姬', '嬴政', '武则天']
9
10 # insert(index, arg) 在列表中指定位置,插入元素
11 name.insert(3, '王昭君') # name=['妲己', '安琪拉', '嫦娥', '王昭君', '小乔', '周瑜']
12
13 # reverse() 列表 倒序,无参数
14 name.reverse()
15 print(name) # 输出:['周瑜', '小乔', '嫦娥', '安琪拉', '妲己']
16
17 # index() 查找指定字符串并返回索引,若字符串不存在,将报错
18 print(name.index('小乔')) # 输出:3
19
20 # pop(-2) 删除指定索引的元素,无参数时,默认删除列表最后一个
21 name.pop(-2) # name=['妲己', '安琪拉', '嫦娥', '周瑜']
22
23 # remove() 删除找到的第一个指定元素,没有找到要删除的元素,报错
24 name.remove('安琪拉') # 输出:['妲己', '嫦娥', '小乔', '周瑜']
25
26 # count() 返回指定元素 在列表中存在的次数
27 name.count('小乔') # 输出:1
28
29 # clear() 清空列表,无参数
30 name.clear() # 输出:[]
31
32 # del
33 del name[1:4:2] # 删除元素,可通过元素索引、切片
34 print(name) # 输出:['妲己', '嫦娥', '周瑜']
35
36 del name # 删除列表
列表中的切片操作
1 # 索引1-3的元素,被指定字符替换
2 shooter = ['鲁班', '后羿', '孙尚香', '黄忠', '伽罗', '虞姬']
3 shooter[1:4] = ['马可波罗', '狄仁杰', '李元芳', '百里守约', '成吉思汗'] # 可以用元组、列表 赋值
4 print(shooter) # 输出:['鲁班', '马可波罗', '狄仁杰', '李元芳', '百里守约', '成吉思汗', '伽罗', '虞姬']
5
6 shooter[1:4] = '百里守约' # 用字符串 赋值
7 print(shooter) # 输出:['鲁班', '百', '里', '守', '约', '伽罗', '虞姬']
copy() 复制
1 # copy() 复制列表,无参数
2 name = ['妲己', '安琪拉', '嫦娥', '小乔', '周瑜']
3 name1 = name # name1 和 name 是同一个列表,id相同
4 name_copy = name.copy() # 创建一个新列表name_copy,值同name, id 不同
5 print(id(name)) # 输出:2034224161416
6 print(id(name1)) # 输出:2034224161416
7 print(id(name_copy)) # 输出:2034224161480
8
9 name[2] = '诸葛亮' # 改变原列表name的值
10 print("""
11 name = {}
12 name1 = {}
13 name_copy = {}
14 """.format(name, name1, name_copy))
15
16 """
17 name 和 name1 的值,均为:['妲己', '安琪拉', '诸葛亮', '小乔', '周瑜']
18 name_copy 值为:['妲己', '安琪拉', '嫦娥', '小乔', '周瑜']
19 """
sort()
1 # sort() 对列表中元素(相同类型:字符串、数字),进行升序排序(ASCII)
2 num = [2, 5, 1, 7, 5.5]
3 num.sort()
4 print(num) # 输出:[1, 2, 5, 5.5, 7]
5
6 str1 = ['d', 'D', 'a', 'F', 'G', 'f']
7 str1.sort()
8 print(str1) # 输出:['D', 'F', 'G', 'a', 'd', 'f']
9
10 # 对列表中元素类型为 元组/列表的,元组/列表中,第一个元素的类型需相同
11 club = [(7, 'a', 2, 'ss'), (6, 'x'), (0, 1, 'z')]
12 club.sort()
13 print(club) # 输出:[(0, 1, 'z'), (6, 'x'), (7, 'a', 2, 'ss')]
14
15 # 列表中的元素需为同一种类型,才能用sort()排序,否则 报错
列表中的元组,元组中的列表
1 # 列表中,含有元组
2 list_tuple = ['诸葛亮', '张良', '王昭君', ('安琪拉', '妲己')]
3 list_tuple[-1][0] = '甄姬' # 试图 将元组元素'安琪拉',修改为‘甄姬’,程序报错
4 list_tuple[-1] = '貂蝉' # 列表中的元组 只能作为一个整体被替换
5
6 # 元组中的列表
7 tuple_list = ('张良', '王昭君', ['安琪拉', '妲己'])
8 tuple_list[-1][0] = '高渐离' # 元组中的列表,列表中的元素可被修改 ,但列表不可作为一个整体 被 替换
9 tuple_list[-1] = '周瑜' # 错误操作
dict 字典
1 # 定义
2 dic = {'key1':'value1', 'key2':'value2',……} # key 必须是唯一的
3
4 # tuple类型数据,可作为key
5 # list 和 dict 不能作为key
6
7 dic_name = {1: '庄周', 'key': 6, ('list', 'tuple'): ([1, 2, 'ss'], (5, 6, 'ee'))}
8 print(dic_name[('list', 'tuple')]) # 输出:([1, 2, 'ss'], (5, 6, 'ee'))
9
10 # hero1 = {['name', 'age']: 'ss'} # 运行会报错
1 # 通过 key 获取/修改 对应的value值
2 hero = {'na1': '庄周', 'na2': '明世隐', 'na3': '孙膑', 'na4': '鬼谷子'}
3
4 # 获取值
5 print(hero['na1']) # 输出:庄周
6 print(hero.get('na3')) # 输出:孙膑
7
8 # 修改值
9 hero['na2'] = '东皇太一'
10 print(hero) # 输出:{'na1': '庄周', 'na2': '东皇太一', 'na3': '孙膑', 'na4': '鬼谷子'}
1 # 获取字典中所有的键值对
2 print(hero.items()) # 输出:dict_items([('na1', '庄周'), ('na2', '明世隐'), ('na3', '孙膑'), ('na4', '鬼谷子')])
3
4 #将获取的键值对 转化为 list
5 dict_items = list(hero.items())
6
7 # 通过索引获取
8 print(dict_items[1, 1]) # 输出: 明世隐
1 # 获取字典中所有的key
2 print(hero.keys()) # 输出:dict_keys(['na1', 'na2', 'na3', 'na4'])
3
4 # 获取字典中所有的value
5 print(hero.values()) # 输出:dict_values(['庄周', '明世隐', '孙膑', '鬼谷子'])
6
7 # 清空字典
8 hero.clear()
9 print(hero) # 输出:{}
10
11 # 通过key 删除字典中的 key-value 值对
12 hero.pop('na1') # 必须传一个参数key
13 print(hero) # 输出: {'na2': '明世隐', 'na3': '孙膑', 'na4': '鬼谷子'}
14
15 # 删除字典最后一个键值对,并返回这个键值对,无需传参
16 print(hero.popitem()) # 输出:('na4': '鬼谷子')
17 print(hero) # 输出:{'na1': '庄周', 'na2': '明世隐', 'na3': '孙膑'}
18
19 # 复制字典
20 hero_copy = hero.copy()
fromkeys([key, ……], '默认值') 字典重定义
1 # 重定义的单个/多个key, 都是相同的默认值
2 hero_redefined = hero.fromkeys(['key1', 'key2', 'key3'], 'default_value')
3 print(hero_redefined) # 输出:{'key1': 'default_value', 'key2': 'default_value', 'key3': 'default_value'}
4 print(hero) # 输出:{'na1': '庄周', 'na2': '明世隐', 'na3': '孙膑', 'na4': '鬼谷子'}
setdefault("key", "default_value") 为字典中单个key 赋默认值, 参数为 单个键值对,default_value 值可省略
1 # 若 key 在字典中存在,则不覆盖默认值;若key在字典中不存在,则创建key,并赋初始值
2 hero.setdefault('na1', '鲁班大师')
3 hero.setdefault('new_key', '蔡文姬')
4 print(hero) # 输出: {'na1': '庄周', 'na2': '明世隐', 'na3': '孙膑', 'na4': '鬼谷子', 'new_key': '蔡文姬'}
update(dict) 将字典参数更新到目标字典中
1 # update(dict) 参数:字典,将hero_temp字典 更新到 hero字典
2 hero_temp = {'na1': '妲己', 'na_new': '安琪拉'}
3 hero.update(hero_temp)
4 print(hero) # 输出:{'na1': '妲己', 'na2': '明世隐', 'na3': '孙膑', 'na4': '鬼谷子', 'ne': '安琪拉'}
字典中新增键值对
1 hero['诗人'] = '李白' # 新增键值对
2 print(hero) # 输出:{'na1': '庄周', 'na2': '明世隐', 'na3': '孙膑', 'na4': '鬼谷子', '诗人': '李白'}
Python中 可变类型 与 不可变类型
1 # 元组 字符串 是不可变类型
2 tup = ('s1', 's2')
3 tup = tup.__add__(('s3', 's4')) # tup 元组 新增 元素,类似于 两个字符串拼接,赋值于另一个变量,元组的地址被改变
4 print(tup) # 输出:('s1', 's2', 's3', 's4')
5
6 tup[0] = 's0' # 运行报错,因为:元组不可被改变,通过索引 修改 元组元素的值,是不可以的
7
8 str1 = 's3 sunday'
9 print(id(str1)) # 输出:2444818405680
10 str1 = 'ss' # 修改字符串str1标签的指向地址
11 print(id(str1)) # a 指向的地址改变了, 输出:2444818412744
1 # 列表 字典 是可变类型,可修改列表、字典的元素,地址id不会变
2 ls = [1, 'ss', 3.5, [6, 'dd'], 4 < 5]
3 print(id(ls)) # 输出:2674034238152
4 ls[1] = 5 # 修改列表元素
5 print(id(ls)) # 输出:2674034238152
6 print(ls) # 输出:[1, 5, 3.5, [6, 'dd'], True]
字符串 和 列表的区别
1 name = 'Lucy'
2 name.replace('u', 'an')
3 print(name) # 输出:Lucy
4 re_name = name.replace('u', 'an')
5 print(re_name) # 输出:Lancy
1 str1 = "lucy"
2 str1[1:3] = 'a' # 报错 TypeError: 'str' object does not support item assignment
类型判断 isinstance()
1 # isinstance(object, type) 类型判断,输出结果:True, False
2 int_num = 8
3 print(isinstance(int_num, int)) # 判断int_num 类型是否为 int类型,输出:True
4 print(isinstance(int_num, float)) # 输出:False
all() 判断元组、列表、集合中,是否存在元素的值为假(即:'', None, 0),是则返回False,否则返回True
1 # all(object)
2 tuple_a = (1, 2, 'we', 'are')
3 tuple_b = ()
4
5 list_a = [1, 2, '', 'are'] # list_a = [1, 2, None, 'are']
6 list_b = []
7
8 set_a = {1, 0, 'we', 'are'}
9 set_b = {}
10
11 print("""
12 tuple_a:{}
13 list_a:{}
14 set_a:{}
15 """.format(all(tuple_a), all(list_a), all(set_a)))
16
17 print("*"*10, """空元组、空列表、空集合,返回Ture
18 tuple_b:{}
19 list_b:{}
20 set_b:{}
21 """.format(all(tuple_b), all(list_b), all(set_b)))
22
23 # 输出:
24 tuple_a:True
25 list_a:False
26 set_a:False
27
28 ********** 空元组、空列表、空集合,返回Ture
29 tuple_b:True
30 list_b:True
31 set_b:True
32
any() 判断元组、列表、集合中,是否所有的元素值都为假(即:'', None, 0),是则返回False, 否则返回True
1 # any(object)
2 tuple_a = (4, None, 'ss', 0, '')
3 tuple_b = ()
4
5 list_a = ['', 0, None]
6 list_b = []
7
8 set_a = {4, 'ss', None}
9 set_b = {}
10 print('''
11 tuple_a : {}
12 list_a : {}
13 set_a : {}
14 '''.format(any(tuple_a), any(list_a), any(set_a)))
15
16 print('*'*10, '''空元组、空列表、空集合,返回False
17 tuple_b : {}
18 list_b : {}
19 set_b : {}
20 '''.format(any(tuple_b), any(list_b), any(set_b)))
21
22 # 输出:
23 tuple_a : True
24 list_a : False
25 set_a : True
26
27 ********** 空元组、空列表、空集合,返回False
28 tuple_b : False
29 list_b : False
30 set_b : False
31
Python之常用数据类型详解的更多相关文章
- SQLAlchemy02 /SQLAlchemy对数据的增删改查操作、属性常用数据类型详解
SQLAlchemy02 /SQLAlchemy对数据的增删改查操作.属性常用数据类型详解 目录 SQLAlchemy02 /SQLAlchemy对数据的增删改查操作.属性常用数据类型详解 1.用se ...
- SQLAlchemy(二):SQLAlchemy对数据的增删改查操作、属性常用数据类型详解
SQLAlchemy02 /SQLAlchemy对数据的增删改查操作.属性常用数据类型详解 目录 SQLAlchemy02 /SQLAlchemy对数据的增删改查操作.属性常用数据类型详解 1.用se ...
- Python基础之数据类型详解(2)
今天继续昨天的python基本数据类型详解,按照上一篇博文的格式,接下来讲解列表.元组.字典以及集合. 列表 1.用途按位置存放多个值2.定义在[]内用逗号分割开多个任意类型的元素 # 定义列表 # ...
- python中常用模块详解二
log模块的讲解 Python 使用logging模块记录日志涉及四个主要类,使用官方文档中的概括最为合适: logger提供了应用程序可以直接使用的接口API: handler将(logger创建的 ...
- python中常用模块详解一
1.time 模块 import time s = time.localtime() # 把时间转化成格式化的时间,通过. 取得里面的年月日等 struct_time 格式 time.struct_t ...
- Python基础之数据类型详解
为什么会有数据类型? 在介绍具体的数据类型之前,需要了解为什么需要区分数据类型.我们知道,一个公司会有很多个大的部门,每个部门下又会有许多细分的小部门,构成了公司的完整体系结构.如果把python的数 ...
- Python - 字符串常用函数详解
str.index(sub, start=None, end=None) 作用:查看sub是否在字符串中,在的话返回索引,且只返回第一次匹配到的索引:若找不到则报错:可以指定统计的范围,[start, ...
- redis详解(二)-- 数据类型详解
Redis常用数据类型详解 1,Redis最为常用的数据类型主要有以下: String Hash List Set Sorted set pub/sub Transactions 在具体描述这几种数据 ...
- Python数据类型详解——元组
Python数据类型详解--元组 有时候我们的列表数据不想被别人修改时该怎么办? 此时,就可以使用元组来存放,元祖又称为只读列表,不能修改 定义方式:与列表类似,将列表的[]换成()即可. 特性: 1 ...
- Python数据类型详解——字典
Python数据类型详解--字典 引子 已经学习了列表,现在有个需求--把公司每个员工的姓名.年龄.职务.工资存到列表里,你怎么存? staff_list = [ ["Kwan", ...
随机推荐
- Oracle 存储过程2: PL/SQL数据类型
一.标量数据类型 标量数据类型的变量只有一个值,且内部没有分量.标量数据类型包括数字型,字符型,日期型和布尔型.这些类型有的是 Oracle SQL 中有的数据类型,有的是 PL/SQL 自身附加的数 ...
- composer更新报错
在用composer安装Yii2的扩展插件时,报错: [UnexpectedValueException] Could not parse version constraint <=2.*: I ...
- springboot1.x apollo 更改属性值不起作用。 ConfigurationProperties
1. @ApolloConfigChangeListeners 默认监控命名空间是 application.properties , 如果是自己创建的namespace ,一定要明确指定(包含文件扩展 ...
- 嵌入式Qt中实现串口读取的事件驱动方法
在嵌入式Linux系统的UI设计中,比较常见的是使用Qt库来实现.而在Qt中进行程序设计时,也经常会用到串口(UART)通信.现在基于Qt5.1以上的版本中,集成有串口模块(如QSerialPort) ...
- UCF Local Programming Contest 2018 C. First Last Sorting 思维、简单DP
C. First Last Sorting链接:https://nanti.jisuanke.com/t/44141
- const引用和指针
1.可以为const引用初始化一个非const的对象.字面值,甚至是一般表达式. 2.对引用初始化时必须严格进行类型匹配,但是const引用初始化时不需要类型匹配,只要可以转换为const所定义的类型 ...
- element的el-table合计显示不出来
在updated中写入 this.$nextTick(() => { this.$refs["printStatisticsTableData"].doLayout(); } ...
- Application.HandleMessage与Application.ProcessMessage
HandleMessage: HandleMessage中断应用程序的执行,以便Windows可以在将控制权返回给应用程序之前处理来自Windows消息队列的单个消息. 如果消息队列为空,则Handl ...
- Study python_04
数组 a = [1,2,3] print(a) 数组替换 a = [1,2,3] a[0] = 100 print(a) 数组去重复 def delete_chong(): a = [1,1,2,2, ...
- 使用IScroll组件出现滑动卡顿问题解决方法
var is = new IScroll('#wrapper2', { scrollX: true, scrollY: false, click: true, keyBindings: true, / ...