Python 序列分类 数据类型

详细介绍

Python 主要数据类型: 元组Tuple, 字符串Str,列表List,字典Dict,集合Set

对比

元组Tuple 字符串Str 列表List 字典Dict 集合Set
形式 (1, 2, 3) “abc” [1, 2, 3] {key : value} {1, 2, 3}
可变 不可变 不可变 可变 可变 可变
有序 有序 有序 有序 无序 无序
转换函数 tuple() str() list() dict() set()

各大类型创建方式

Tuple元组

  • Tuple是不可变的序列,通常用于存储异构数据的集合(例如由内置的 enumerate() 生成的 2 元组)。 元组还用于需要不可变的同构数据序列的情况(例如允许存储在集合或字典实例中)。3

可以通过多种方式构造元组:

  1. 使用一对括号表示空元组: ()

  2. 对单例元组使用尾随逗号:a,(a,)

  3. 分隔 带逗号的项目:a, b, c(a, b, c)

  4. 使用tuple()内置: tuple()tuple(iterable)

  • 构造函数构建一个元组,其项目相同且顺序相同 作为可迭代的项目。iterable 可以是一个序列、一个支持迭代的容器或一个迭代器对象。 如果iterable 已经是一个元组,则原样返回。 例如,tuple('abc')返回('a', 'b', 'c')tuple( [1, 2, 3] )返回 (1, 2, 3)。 如果没有给出参数,构造函数会创建一个新的空元组,()

  • 请注意,实际上是逗号构成了元组,而不是括号。 括号是可选的,除了在空元组的情况下,或者当需要它们以避免句法歧义时。 例如,f(a, b, c) 是一个带有三个参数的函数调用,而 f((a, b, c)) 是一个带有 3 元组作为唯一参数的函数调用。

  • 元组实现了所有常见的序列操作。

  • 定义tuple = (1, 2, 3)

  • 转换tuple([iterable])

>>> tuple('abc')
('a', 'b', 'c')
>>> type((1, 2, 3))
<class 'tuple'>

Str字符串

文本序列类型-Python中的str文本数据是用str对象或字符串处理的。字符串是Unicode代码点的不可变序列。字符串文字的书写方式多种多样:

  1. 单引号:'allows embedded "double" quotes'
  2. 双引号:"allows embedded 'single' quotes"
  3. 三重引号:'''Three single quotes''', """Three double quotes"""
  • 三重引号字符串可以跨多行-所有关联的空格都将包含在字符串文本中。

  • 作为单个表达式的一部分并且它们之间只有空格的字符串文字将隐式转换为单个字符串文字。也就是说,(“spam”“eggs”)=“spam eggs”。

定义str = "fyz is nb plus pro Max"

转换str(obj)

>>> str(b'Zoot!')
"b'Zoot!'"

range,zip,map,enumerate

map(function, iterable, …)

  • map(function, iterable, )
    map(function, iterable, ...) 返回一个迭代器,该迭代器将函数应用于可迭代的每个项目,产生结果。 如果传递了额外的可迭代参数,则函数必须采用那么多参数并并行应用于所有可迭代项中的项目。 对于多个可迭代对象,当最短的可迭代对象耗尽时,迭代器将停止。
  • function:函数,iterable:可迭代对象
>>>list(map(lambda x, y : x + y, [1, 2, 3], [10, 20, 30, 40, 50]))
[11, 22, 33]

Ranges

range表示一个不可变的数字序列,通常用于在 for 循环中循环特定次数。

  • range(stop)

  • range(start, stop[, step])

  • start 开始参数的值(如果没有提供参数,则为 0)

  • stop 停止参数的值

  • step 步骤参数的值(如果没有提供参数,则为 1)

>>> list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> list(range(1, 11))
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> list(range(0, 30, 5))
[0, 5, 10, 15, 20, 25]
>>> list(range(0, 10, 3))
[0, 3, 6, 9]
>>> list(range(0, -10, -1))
[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
>>> list(range(0))
[]
>>> list(range(1, 0))
[]

zip

  • zip(*iterables) 制作一个迭代器,聚合来自每个迭代器的元素。

  • 返回元组的迭代器,其中第 i 个元组包含来自每个参数序列或可迭代对象的第 i 个元素。 当最短的输入迭代用完时,迭代器停止。 使用单个可迭代参数,它返回一个 1 元组的迭代器。 没有参数,它返回一个空的迭代器。

  • 当您不关心较长iterables中的尾随、不匹配值时,只应将zip()用于长度不等的输入。原文:zip() should only be used with unequal length inputs when you don’t care about trailing, unmatched values from the longer iterables.

  • zip()和*运算符可用于解压缩列表:

>>> x = [1, 2, 3]
>>> y = [4, 5, 6]>>> zipped = zip(x, y)
>>> list(zipped)
[(1, 4), (2, 5), (3, 6)]>>> x2, y2 = zip(*zip(x, y))
>>> x == list(x2) and y == list(y2)
True

enumerate

  • enumerate(iterable, start=0)
  • 返回一个枚举对象。 iterable 必须是一个序列、一个迭代器或其他一些支持迭代的对象。 enumerate()返回的迭代器的 next() 方法返回一个元组,其中包含一个计数(从 start 开始,默认为 0)和通过迭代迭代获得的值。
>>>names = ["fyz", "yjk", "xhr", "zc"]
>>>for i, name in enumerate(names):print(i, name)0 fyz
1 yjk
2 xhr
3 zc

List列表

  • list是可变序列,通常用于存储同类项的集合(其中精确的相似度因应用程序而异)。

可以通过多种方式构造列表:

  1. 使用一对方括号表示空列表:[]

  2. 使用方括号,用逗号分隔项目:[a],[a, b, c ]

  3. 使用列表推导式:[x for x in iterable]

  4. 使用类型构造函数:list()list(iterable)

  • 构造函数构建一个列表,其项目与可迭代的项目相同且顺序相同。 iterable可以是一个序列、一个支持迭代的容器或一个迭代器对象。
  • 如果 iterable已经是一个列表,则创建并返回一个副本,类似于iterable[:]。 例如,list('abc') 返回['a', 'b', 'c'] 并且list( (1, 2, 3) )返回[1, 2, 3]。 如果没有给出参数,构造函数会创建一个新的空列表 []
>>> list([1, 2, 3])
[1, 2, 3]
>>> names = ["fyz", "yjk", "xhr", "zc"]
>>> list([i.upper() for i in names])
['FYZ', 'YJK', 'XHR', 'ZC']

dict字典

  • 映射类型Mapping Types — dict 映射对象将可散列值映射到任意对象。 映射是可变对象。 目前只有一种标准映射类型,即字典。

  • 字典的键几乎是任意值。 不可散列的值,即包含列表、字典或其他可变类型(按值而不是按对象标识进行比较)的值不能用作键。 用于键的数字类型遵循数字比较的正常规则:如果两个数字比较相等(例如 1 和 1.0),那么它们可以互换使用以索引相同的字典条目。 (但是请注意,由于计算机将浮点数存储为近似值,因此将它们用作字典键通常是不明智的。)

  • 可以通过将逗号分隔的key:value对列表放在大括号内来创建字典,例如:{' jack': 4098, 'sjoerd': 4127}{4098:'jack', 4127: 'sjoerd'},或通过 dict 构造函数。

  • 返回一个从可选位置参数和一组可能为空的关键字参数初始化的新字典。

可以通过多种方式创建字典:

  1. 使用逗号分隔的键:大括号内的值对列表:{'jack': 4098, 'sjoerd': 4127}{4098: 'jack', 4127: 'sjoerd'}

  2. 使用字典推导式:{}, {x: x ** 2 for x in range(10)}

  3. 使用类型构造函数:dict(), dict([('foo', 100), ('bar', 200)]),dict(foo=100, bar=200)

>>> {x: x ** 2 for x in range(10)}
{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}
>>> dict([('foo', 100), ('bar', 200)])
{'foo': 100, 'bar': 200}
  • 字典的合并
>>> a = {"fyz":"dalao", "yjk":"wuqing"}
>>> b = {"xhr":"niubi", "zc":"laji"}
>>> {**a, **b}
{'fyz': 'dalao', 'yjk': 'wuqing', 'xhr': 'niubi', 'zc': 'laji'}
  • 如果没有给出位置参数,则创建一个空字典。 如果给出了一个位置参数并且它是一个映射对象,则使用与映射对象相同的键值对创建一个字典。 否则,位置参数必须是可迭代对象。 可迭代对象中的每个项目本身必须是一个恰好有两个对象的可迭代对象。 每个项目的第一个对象成为新字典中的键,第二个对象成为相应的值。 如果某个键出现多次,则该键的最后一个值将成为新字典中的相应值。

  • 如果给出了关键字参数,则关键字参数及其值将添加到从位置参数创建的字典中。 如果要添加的键已经存在,则来自关键字参数的值将替换来自位置参数的值。

下面的例子都返回一个等于{"one": 1, "two": 2, "three": 3}的字典:

>>> a = dict(one=1, two=2, three=3)
>>> b = {'one': 1, 'two': 2, 'three': 3}
>>> c = dict(zip(['one', 'two', 'three'], [1, 2, 3]))
>>> d = dict([('two', 2), ('one', 1), ('three', 3)])
>>> e = dict({'three': 3, 'one': 1, 'two': 2})
>>> f = dict({'one': 1, 'three': 3}, two=2)>>> a == b == c == d == e == f
True

Set集合

  • Set Types-Set,frozenset

  • Set对象是不同的可哈希对象的无序集合。常见的用途包括成员测试、从序列中删除重复项以及计算数学运算,如交集、并集、差分和对称差分

  • 与其他集合一样,set支持x in setlen(set)For x in set。集合是无序集合,不记录元素位置或插入顺序。因此,集合不支持索引、切片或其他类似序列的行为。

  • 当前有两种内置的set类型,setfrozenset。集合类型是可变的-可以使用add()remove()等方法更改内容。因为它是可变的,所以它没有哈希值,不能用作字典键或另一个集合的元素。frozenset类型是不可变的和可散列的-它的内容在创建之后不能被更改;因此,它可以用作字典键或另一个集合的元素。

  • 除了set构造函数之外,还可以通过在大括号中放置逗号分隔的元素列表(例如:{'jack','sjoerd})来创建非空集(不是frozensets)。

  • 返回一个新的set或frozenset对象,其元素取自iterable。集合的元素必须是可哈希的。要表示集合的集合,内部集合必须是frozenset对象。如果未指定iterable,则返回一个新的空集。

集合可以通过多种方式创建:

  1. 使用逗号分隔的大括号内元素列表:{'jack', 'sjoerd'}

  2. 使用集合理解:{c for c in 'abracadabra' if c not in 'abc'}

  3. 使用类型构造函数:set()set('foobar')set(['a','b','foo'])

>>> {c for c in 'abracadabra' if c not in 'abc'}
{'d', 'r'}
>>> set('foobar')
{'b', 'r', 'f', 'o', 'a'}
>>> set(['a','b','foo'])
{'b', 'foo', 'a'}

使用类型构造函数:set()set('foobar')set(['a','b','foo'])

>>> {c for c in 'abracadabra' if c not in 'abc'}
{'d', 'r'}
>>> set('foobar')
{'b', 'r', 'f', 'o', 'a'}
>>> set(['a','b','foo'])
{'b', 'foo', 'a'}

Python序列 数据类型 创建方式 Tuple元组 Str字符串 List列表 dict字典 Set集合 range,zip,map,enumerate相关推荐

  1. python常用字符大全_python字符串,列表,字典,集合的常用方法

    1.字符串 1.1find方法可以在一个较长的字符串中查找子串,他返回字串所在位置的最左端索引,如果没有就返回-1 1.2join方法是非常重要的字符串方法,它是split方法的逆方法,用于连接序列中 ...

  2. python入门之容器类型数据的一系列操作之列表、字典、集合

    列表的操作 1.列表的拼接 (同元组) 2.列表的重复 (同元组) 3.列表的切片 (同元组) 语法 => 列表[::] 完整格式:[开始索引:结束索引:间隔值] (1)[开始索引:] 从开始索 ...

  3. python.集合转列表_Python基础数据类型:元组、列表、字典、集合

    你好,我是goldsunC. 让我们一起进步吧! 元组.列表.字典.集合 元组和列表是Python语言中非常重要的一部分内容,它们是Python中除了字符串以外的另两种序列结构,几乎在任何地方都少不了 ...

  4. 学习Python(5)排序tuple元组dict字典set集合

    目录 学习Python(5)排序&tuple元组&dict字典&set集合 排序 冒泡排序 选择排序 元组 创建元组 元组元素的访问 元组操作 元组功能 二维元组 字典 创建字 ...

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

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

  6. 【Python基础】使用列表、字典和集合生成式来缩短代码

    作者 | Philip Wilkinson 编译 | VK 来源 | Towards Datas Science 在使用Python将近一年的时间里,我经常遇到"生成式"这个词,但 ...

  7. python字典序列化是什么意思_python序列化中的字符串,列表,字典,类的序列化解释...

    python序列化中的字符串,列表,字典,类的序列化解释 yuaneuro • 2020 年 03 月 07 日 我们知道现在各大语言都有其序列化数据和反序列的方式, 比如php的serialize和 ...

  8. Python学习笔记:列表、字典与集合解析(List, Dict and Set Comprehensions)

    Python学习笔记:列表.字典与集合解析(List, Dict and Set Comprehensions) 1.列表解析 最受喜爱的Python语言特性.过滤一个集合的元素生成一个新的列表. 一 ...

  9. python序列数据类型_Python 数据类型 之 序列类型

    序列:表示索引为非负整数的有序对象集合,所有序列都支持迭代 序列类型有:字符串,列表,元组 三种 字符串也是一种序列 列表和元组是任意python对象的序列或叫有序集合 字符串和元组不可变序列,列表支 ...

最新文章

  1. 注意:你智能机中的流氓APP
  2. 项目支出数据产生过程
  3. java手机网站开发工具_制作网站常用的网页开发工具有哪些
  4. 数字图像处理中的高通滤波和低通滤波
  5. hdu 1025 Constructing Roads In JGShining's Kingdom(DP + 二分)
  6. 【CCCC】L2-018 多项式A除以B (25分),多项式除法
  7. 华为多臂路由_华为单臂路由配置
  8. 凸优化有关的数值线性代数知识四:分块消元与Schur补
  9. Python程序的采样分析神器py-spy模块实践
  10. php多线程webservice,PHP有适用于高并发的WebService框架嘛?
  11. lua 数组随机排序
  12. 百度账号更换绑定的手机号
  13. 现代大学英语精读第二版(第四册)学习笔记(原文及全文翻译)——16B - Is Everybody Happy?(人人都幸福吗?)
  14. 数码相框(五、使用freetype库在LCD显示几行文字)
  15. 迅雷导出ed2k到eMule链接无效处理
  16. JS实现国家省市三级无刷新联动
  17. EOS智能合约开发(二):EOS创建和管理钱包
  18. Win10右击个性化后报错“该文件没有与之关联的应用来执行该操作
  19. c#连接sql 2014登录界面及密码验证
  20. 解构语音交互产品--如何设计对话产品

热门文章

  1. 完整的微信登陆 接收消息流程
  2. Mac上Android手机无法连接解决方案
  3. 李沐论文精读系列四:CLIP和改进工作串讲(LSeg、GroupViT、VLiD、 GLIPv1、 GLIPv2、CLIPasso)
  4. 读文献--《U-Net: Convolution Networks for Biomedical Image Segmentation 》
  5. 微信程序开发系列教程(二)微信订阅号+人工智能问答服务
  6. EBS-自动获取/创建CCID
  7. shell 99乘法口诀表
  8. quoted string not properly terminated错误提示
  9. 未转变者服务器物品ID大全,Unturned未转变者Elver物品代码大全 Elver地图全ID代码汇总...
  10. 消费者人群画像—信用智能评分 比赛回顾