笔记参考了菜鸟教程

Python 中的变量不需要声明,赋值才创建。赋值给变量的是什么类型变量就是什么类型

多个变量赋值

  1. 1 a, b, c = 1, 2, "runoob"

标准数据类型
Python3 中有六个标准的数据类型:
不可变数据:Number(数字)、String(字符串)、Tuple(元组)
可变数据: List(列表)、Set(集合)、Dictionary(字典)
Python 字符串不能被改变。向一个索引位置赋值,比如word[0] = 'm'会导致错误。

Number(数字)
Python3数字不支持Double型
内置的 type() 函数可以用来查询变量所指的对象类型。
此外还可以用 isinstance 来判断:isinstance(变量,类型)

isinstance 和 type 的区别在于:type()不会认为子类是一种父类类型,isinstance()会认为子类是一种父类类型。

  1. 1 >>> class A:
  2. 2 ... pass
  3. 3 ...
  4. 4 >>> class B(A):
  5. 5 ... pass
  6. 6 ...
  7. 7 >>> isinstance(A(), A)
  8. 8 True
  9. 9 >>> type(A()) == A
  10. 10 True
  11. 11 >>> isinstance(B(), A)
  12. 12 True
  13. 13 >>> type(B()) == A
  14. 14 False

到 Python3 中,把 True 和 False 定义成关键字了,但它们的值还是 1 和 0,它们可以和数字相加。

数值运算
数值的除法包含两个运算符:/ 返回一个浮点数,// 返回一个整数。

  1. 1 >>>2 ** 5 # 乘方
  2. 2 32

List(列表)
列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(所谓嵌套)。
和字符串一样,列表同样可以被索引和截取,列表被截取后返回一个包含所需元素的新列表。

  1. 1 #!/usr/bin/python3
  2. 2
  3. 3 list = [ 'abcd', 786 , 2.23, 'runoob', 70.2 ]
  4. 4 tinylist = [123, 'runoob']
  5. 5
  6. 6 print (list) # 输出完整列表
  7. 7 print (list[0]) # 输出列表第一个元素
  8. 8 print (list[1:3]) # 从第二个开始输出到第三个元素
  9. 9 print (list[2:]) # 输出从第三个元素开始的所有元素
  10. 10 print (tinylist * 2) # 输出两次列表
  11. 11 print (list + tinylist) # 连接列表

输出结果:
['abcd', 786, 2.23, 'runoob', 70.2]
abcd
[786, 2.23]
[2.23, 'runoob', 70.2]
[123, 'runoob', 123, 'runoob']
['abcd', 786, 2.23, 'runoob', 70.2, 123, 'runoob']

与Python字符串不一样的是,列表中的元素是可以改变的

Python 列表截取可以接收第三个参数,参数作用是截取的步长

  1. >>>A=['a','b','c','d','e']
  2. >>>A[1:4:2]

输出结果:['b','d']

将列表当做堆栈使用

列表方法使得列表可以很方便的作为一个堆栈来使用,堆栈作为特定的数据结构,最先进入的元素最后一个被释放(后进先出)。用 append() 方法可以把一个元素添加到堆栈顶。用不指定索引的 pop() 方法可以把一个元素从堆栈顶释放出来。

  1. >>> stack = [3, 4, 5]
  2. >>> stack.append(6)
  3. >>> stack.append(7)
  4. >>> stack
  5. [3, 4, 5, 6, 7]
  6. >>> stack.pop()
  7. 7
  8. >>> stack
  9. [3, 4, 5, 6]
  10. >>> stack.pop()
  11. 6
  12. >>> stack.pop()
  13. 5
  14. >>> stack
  15. [3, 4]

将列表当作队列使用

也可以把列表当做队列用,只是在队列里第一加入的元素,第一个取出来;但是拿列表用作这样的目的效率不高。在列表的最后添加或者弹出元素速度快,然而在列表里插入或者从头部弹出速度却不快(因为所有其他的元素都得一个一个地移动)。

  1. >>> from collections import deque
  2. >>> queue = deque(["Eric", "John", "Michael"])
  3. >>> queue.append("Terry") # Terry arrives
  4. >>> queue.append("Graham") # Graham arrives
  5. >>> queue.popleft() # The first to arrive now leaves
  6. 'Eric'
  7. >>> queue.popleft() # The second to arrive now leaves
  8. 'John'
  9. >>> queue # Remaining queue in order of arrival
  10. deque(['Michael', 'Terry', 'Graham'])

列表推导式

怕你看不懂,先上栗子,再上锤子!

这里我们将列表中每个数值乘三,获得一个新的列表:

  1. >>> vec = [2, 4, 6]
  2. >>> [3*x for x in vec]
  3. [6, 12, 18]

再看这个好玩的:

  1. >>> vec = [2, 4, 6]
  1. >>> [[x, x**2] for x in vec]
  2. [[2, 4], [4, 16], [6, 36]]

这里我们对序列里每一个元素逐个调用某方法:

  1. >>> freshfruit = [' banana', ' loganberry ', 'passion fruit ']
  2. >>> [weapon.strip() for weapon in freshfruit]
  3. ['banana', 'loganberry', 'passion fruit']

我们可以用 if 子句作为过滤器:

  1. >>> vec = [2, 4, 6]
  2. >>> [3*x for x in vec if x > 3]
  3. [12, 18]
  4. >>> [3*x for x in vec if x < 2]
  5. []

以下是一些关于循环和其它技巧的演示:

  1. >>> vec1 = [2, 4, 6]
  2. >>> vec2 = [4, 3, -9]
  3. >>> [x*y for x in vec1 for y in vec2]
  4. [8, 6, -18, 16, 12, -36, 24, 18, -54]
  5. >>> [x+y for x in vec1 for y in vec2]
  6. [6, 5, -7, 8, 7, -5, 10, 9, -3]
  7. >>> [vec1[i]*vec2[i] for i in range(len(vec1))]
  8. [8, 12, -54]

列表推导式可以使用复杂表达式或嵌套函数:

  1. >>> [str(round(355/113, i)) for i in range(1, 6)]
  2. ['3.1', '3.14', '3.142', '3.1416', '3.14159']

好啦,现在再看如下的是个人都不知道说了什么的锤子:

列表推导式提供了从序列创建列表的简单途径。通常应用程序将一些操作应用于某个序列的每个元素,用其获得的结果作为生成新列表的元素,或者根据确定的判定条件创建子序列。

每个列表推导式都在 for 之后跟一个表达式,然后有零到多个 for 或 if 子句。返回结果是一个根据表达从其后的 for 和 if 上下文环境中生成出来的列表。如果希望表达式推导出一个元组,就必须使用括号。

嵌套列表解析

Python的列表还可以嵌套。

以下栗子展示了3X4的矩阵列表:

  1. >>> matrix = [[1, 2, 3, 4],[5, 6, 7, 8],[9, 10, 11, 12],]

将3X4的矩阵列表转换为4X3列表:

  1. >>> [[row[i] for row in matrix] for i in range(4)]
  2. [[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]

也可以使用以下方法来实现:

  1. >>> transposed = []
  2. >>> for i in range(4):
  3. ... transposed.append([row[i] for row in matrix])
  4. ...
  5. >>> transposed
  6. [[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]

另外一种实现方法:

  1. >>> transposed = []
  2. >>> for i in range(4):
  3. ... # the following 3 lines implement the nested listcomp
  4. ... transposed_row = []
  5. ... for row in matrix:
  6. ... transposed_row.append(row[i])
  7. ... transposed.append(transposed_row)
  8. ...
  9. >>> transposed
  10. [[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]

元组由若干逗号分隔的值组成,栗子:

  1. >>> t = 12345, 54321, 'hello!'
  2. >>> t[0]
  3. 12345
  4. >>> t
  5. (12345, 54321, 'hello!')
  6. >>> # Tuples may be nested:
  7. ... u = t, (1, 2, 3, 4, 5)
  8. >>> u
  9. ((12345, 54321, 'hello!'), (1, 2, 3, 4, 5))

如你所见,元组在输出时总是有括号的,以便于正确表达嵌套结构。在输入时可能有或没有括号, 不过括号通常是必须的(如果元组是更大的表达式的一部分)。

Tuple(元组)
元组(tuple)与列表类似,不同之处在于元组的元素不能修改,只能进行连接组合。元组写在小括号 () 里,元素之间用逗号隔开。

  1. #!/usr/bin/python3
  2.  
  3. tuple = ( 'abcd', 786 , 2.23, 'runoob', 70.2 )
  4. tinytuple = (123, 'runoob')
  5.  
  6. print (tuple) # 输出完整元组
  7. print (tuple[0]) # 输出元组的第一个元素
  8. print (tuple[1:3]) # 输出从第二个元素开始到第三个元素
  9. print (tuple[2:]) # 输出从第三个元素开始的所有元素
  10. print (tinytuple * 2) # 输出两次元组
  11. prin

显示结果:
('abcd', 786, 2.23, 'runoob', 70.2)
abcd
(786, 2.23)
(2.23, 'runoob', 70.2)
(123, 'runoob', 123, 'runoob')
('abcd', 786, 2.23, 'runoob', 70.2, 123, 'runoob')

Set(集合)
集合(set)是由一个或数个形态各异的大小整体组成的,构成集合的事物或对象称作元素或是成员。集合是无序的不重复序列。
基本功能是进行成员关系测试和删除重复元素。列表可存在重复元素,集合不能存在重复元素。

Dictionary(字典)
字典(dictionary)是Python中的内置数据类型。字典以关键字为索引。
列表是有序的对象集合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
字典是一种映射类型,字典用 { } 标识,它是一个无序的 键(key) : 值(value) 的集合。
键(key)必须使用不可变类型,如字符串,元组和数字。
在同一个字典中,键(key)必须是唯一的。

  1. 1 #!/usr/bin/python3
  2. 2 dict = {}
  3. 3 dict['one'] = "1 - 菜鸟教程"
  4. 4 dict[2] = "2 - 菜鸟工具"
  5. 5 tinydict = {'name': 'runoob','code':1, 'site': 'www.runoob.com'}
  6. 6
  7. 7 print (dict['one']) # 输出键为 'one' 的值
  8. 8 print (dict[2]) # 输出键为 2 的值
  9. 9 print (tinydict) # 输出完整的字典
  10. 10 print (tinydict.keys()) # 输出所有键
  11. 11 print (tinydict.values()) # 输出所有值

输出结果:
1 - 菜鸟教程
2 - 菜鸟工具
{'name': 'runoob', 'code': 1, 'site': 'www.runoob.com'}
dict_keys(['name', 'code', 'site'])
dict_values(['runoob', 1, 'www.runoob.com'])

字典推导可以用来创建任意键和值的表达式词典:

  1. >>> {x: x**2 for x in (2, 4, 6)}
  2. {2: 4, 4: 16, 6: 36}

在序列中遍历时,索引位置和对应值可以使用 enumerate() 函数同时得到:

  1. >>> for i, v in enumerate(['tic', 'tac', 'toe']):
  2. ... print(i, v)
  3. ...
  4. 0 tic
  5. 1 tac
  6. 2 toe

同时遍历两个或更多的序列,可以使用 zip() 组合:

#!usr/bin/python3

questions = ['name', 'quest', 'favorite color']
answers = ['lancelot', 'the holy grail', 'blue']
for q, a in zip(questions, answers):
print('{0} {1}'.format(q, a))

执行结果:

  1. name lancelot
  2. quest the holy grail
  3. favorite color blue

要反向遍历一个序列,首先指定这个序列,然后调用 reversed() 函数:

  1. #!usr/bin/python3
  2.  
  3. for i in reversed(range(1, 10, 2)):
  4. print(i,end=" ")

执行结果:

  1. 9 7 5 3 1

1、字典是一种映射类型,它的元素是键值对。
2、字典的关键字必须为不可变类型,且不能重复。
3、创建空字典使用 { }。

字典键的特性:

1.不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住;

2.键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行

Python3基础数据类型(数字、字符串、元组、列表、集合、字典)的更多相关文章

  1. Python基础 数据类型 (字符串、列表、字典、元组、集合、堆、栈、树)

    数据类型有整型.布尔.字符串.列表.字典.元组.集合.堆.栈和树. 1.整型: 整型就是数字 数字表示 python2 64位机器,范围-2^63~2^63-1 超出上述范围,python自动转化为l ...

  2. Python基础之:数字字符串和列表

    目录 简介 数字 字符串 字符串对象str 列表 简介 Python的主要应用是进行科学计算,科学计算的基础就是数字,字符串和列表.本文将会详细的给大家介绍一下这三个数据类型的使用情况. 数字 数字是 ...

  3. python数据类型:序列(字符串,元组,列表,字典)

    序列通常有2个特点: 1,可以根据索引取值 2,可以切片操作 字符串,元组,列表,字典,都可以看做是序列类型 我的操作环境:Ubuntu16.04+python2.7 一.字符串类型 >按索引获 ...

  4. python基础2之字符串、列表、字典、集合

    内容概要: 一.python2 or 3 二.字符串拼接 三.字符串 四.列表.元祖 五.字典 六.集合 七.练习 一.python2 or python3 目前大多使用python2.7,随着时间的 ...

  5. python基础深入(元组、字符串、列表、字典)

    python基础深入(元组.字符串.列表.字典) 一.列表 1.追加 >>>list = [1,2,3,4] #用于在列表末尾添加新的对象,只能单个添加,该方法无返回值,但是会修改原 ...

  6. Python【第二课】 字符串,列表,字典,集合,文件操作

    本篇内容 字符串操作 列表,元组操作 字典操作 集合操作 文件操作 其他 1.字符串操作 1.1 字符串定义 特性:不可修改 字符串是 Python 中最常用的数据类型.我们可以使用引号('或&quo ...

  7. python3 基础数据类型

    一.基础数据类型分类 python的数据类型主要包括以下几种: 1.数字 2.字符串 3.列表 4.字典 5.元组 6.集合 1.数字 int 数字主要是用于计算用的,使用方法并不多 #bit_len ...

  8. Python基础数据类型之字符串

    Python基础数据类型之字符串 一.Python如何创建字符串 在python中用引号将一些文本包起来就构成了字符串(引号可以是单引号.双引号.单三引号,双三引号,它们是完全相同的) >> ...

  9. python_way ,day2 字符串,列表,字典,时间模块

    python_way ,day2 字符串,列表,字典,自学时间模块 1.input: 2.0 3.0 区别 2.0中 如果要要用户交互输入字符串: name=raw_input() 如果 name=i ...

  10. python字符串、列表和字典的说明

    python字符串.列表和字典的说明 字符串.列表.字典 字符串的作用存储一段数据信息.例如 info = '我爱北京天安门' ,在调取的时候可以直接调取,灵活方便,print(info) 就可以把刚 ...

随机推荐

  1. 百钱百鸡小游戏PHP代码

    <?php // 计算小鸡的数量 $count=[]; // 第一个for循环计算公鸡 for ($gj=1;$gj<(100/5);$gj++){ // 第二个for循环计算母鸡 for ...

  2. Vue中keep-alive组件的理解

    对keep-alive组件的理解 当在组件之间切换的时候,有时会想保持这些组件的状态,以避免反复重渲染导致的性能等问题,使用<keep-alive>包裹动态组件时,会缓存不活动的组件实例, ...

  3. Java数据结构——二叉搜索树

    定义二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值: 若 ...

  4. 专为seo新手准备的百度分享工具教程

    http://www.wocaoseo.com/thread-178-1-1.html 百度分享工具是目前seo站长最为常用的工具之一,主要用来让用户分享来提高网站的流量,同时他也有很多实际有效的方式 ...

  5. python IDE(集成开发环境)——PyCharm的安装

    选择PyCharm的原因: 1.很多大佬都推荐,说适合实战操作项目 2.另外是界面可视化不错,颜色很舒服(体验完之后的感觉) 3.PyCharm本身有很多操作快捷键很方便(后续可以记下来常用的,方便自 ...

  6. 除了方文山,用TA你也能帮周杰伦写歌词了

    周杰伦几乎陪伴了每个90后的青春,那如果AI写杰伦风格的歌词会写成怎样呢? 首先当然我们需要准备杰伦的歌词,这里一共收录了他的十几张专辑,近5000多行歌词. 原文档格式: 第一步数据预处理 def ...

  7. android开发之java代码中如何获取到当前时间。详情代码带注释。

    /** *获取当前时间 * @return */ public String getTime(){ Date date= new Date();//创建一个时间对象,获取到当前的时间 SimpleDa ...

  8. VuePress初探(一)

    原文参考链接 手把手教你使用 VuePress 搭建个人博客 有阅读障碍的同学,可以跳过第一至四节,下载我写好的工具包: git clone https://github.com/zhangyunch ...

  9. git 合并两个分支的某个文件

    软件开发基本都是多个feature分支并行开发,而在上线前有可能某个分支的开发或测试还没有完成,又或者是产品调整,取消了该分支功能的上线计划,我们在release前不合并该分支即可,然而如果该分支中的 ...

  10. 【HttpRunner v3.x】笔记 ——5. 测试用例-config

    上一篇中,我们了解到了config,在配置中,我们可以配置测试用例级级别的一些设置,比如基础url.验证.变量.导出. 我们一起来看,官方给出的一个例子: from httprunner import ...