前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Python基础语法(三)

Python基础语法(三)

作者头像
py3study
发布于 2020-01-15 15:07:19
发布于 2020-01-15 15:07:19
92510
代码可运行
举报
文章被收录于专栏:python3python3
运行总次数:0
代码可运行

Python基础语法(三)

1. 数值型数据结构

1.1 要点

在之前的博客也有提到,数值型数据结构在这里就不过多介绍了。在这里提及一些需要知道的知识点。

  • int、float、complex、bool都是类,1\3.14\2+3j都对象(即实例)。这也符合Python一切皆对象的原则。
  • int: 在Python3中,int就是长整型,理论上支持无限大的数字,但是受限于内存区域的大小。
  • float: 由整数部分和小数部分组成。支持十进制和科学计数法表示。只有双精度型。浮点型往往不能精确表示一个数,比如π这样的无理数,它只能尽量靠近。
  • bool:int的子类,也就是说int有的特性它也有,可以跟整型进行计算。仅有两个实例True、False,对应1和0。 1.2 类型转换
  • int(x):返回一个整数
  • float(x):返回一个浮点数
  • complex(x) complex(x,y):返回一个复数
  • bool(x):返回一个布尔值,在前面的Python基础语法(二)中的3.2.2里面已经提及,这里不再赘述。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
num1 = 1234 # 一个整数
num2 = 3.14159  # 一个浮点数

print(float(num1))      # 整数转浮点数
print(int(num2))        # 浮点数转整数
print(complex(num1))    # 整数转复数
print(bool(num2))       # 整数转布尔值
---------------------------------------
1234.0
3
(1234+0j)
True

1.3 进制转换

  • bin(x):返回一个二进制数
  • otc(x):返回一个八进制数
  • hex(x):返回一个十六进制数 注意,返回的是一个字符串,不能当做数字使用
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
print(bin(10))  
print(oct(10))
print(hex(20))
-------------
0b1010
0o12
0x14

1.4 数字处理相关函数

1.4.1 取整

在处理数字时,往往需要对数字进行取整或者四舍五入等操作,这时候可以用math库来对数据进行处理

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import math

print(math.floor(2.5))      # math.floor()函数向下取整
print(math.ceil(2.5))       # math.ceil()函数向上取整
print(round(2.51))          # round()函数四舍六入,注意,是四舍六入
print(round(2.5))
print(round(2.4))
----------------------
2
3
3
2
2

关于round()很多同学会觉得奇怪,为什么是四舍六入,我们平时不是四舍五入的吗?这里,是因为在Python3的文档中规定了小数距离哪个数更近就往哪边取整,至于0.5,就向偶数取整。有关于这个函数的说明可以点击这里查看。建议尽量避免使用这个函数,免得出问题。

1.4.2 最大值与最小值

在一组数中,我们可能需要取最大值或者最小值,使用max()函数可以取最大值,min()函数取最小值。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
list = [1,3,2,9,6,4,5,0]
print(min(list))    # min()函数取最小值
print(max(list))    # max()函数取最大值
--------------------------------------
0
9
1.4.2 特殊数值

有时候我们需要定义一些特殊值进行计算,比如π、常数e等等。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import math
print(math.pi)  # math.pi返回π的近似值
print(math.e)   # math.e返回常数e的近似值
---------------------
3.141592653589793
2.718281828459045

1.5 类型判断

  • type(obj),返回obj的类型,不是字符串
  • isinstance(obj, classinfo),返回布尔值

首先介绍type()函数,它返回的是数据类型

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
a = 5
b = 'hello'
print(type(a))
print(type(b))
--------------
<class 'int'>
<class 'str'>

那么如何做类型判断呢?请看下面例子

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
a = 5
b = 'hello'
if type(a)==int:
    print(True)
if type(b)==str:
    print(True)
-----------------
True
True

isinstance(obj,classinfo)用作判断obj(对象或实例)是否等于classinfo(直接或间接类名、基本类型或者由它们组成的元组)。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>>a = 2
>>> isinstance (a,int)
True
>>> isinstance (a,str)
False
>>> isinstance (a,(str,int,list))    # 是元组中的一个返回 True
True

isinstance() 与 type() 区别:

  • type() 不会认为子类是一种父类类型,不考虑继承关系。
  • isinstance() 会认为子类是一种父类类型,考虑继承关系。

如果要判断两个类型是否相同推荐使用 isinstance()。

2 列表list

  • 一个队列,一个排列整齐的队伍,它是有序的。
  • 列表内的个体称为元素item,由若干个元素有序地排列组成列表。
  • 元素可以是任意对象(数字、字符串、对象、列表等)
  • 列表内元素有顺序,可以使用索引index,索引从0开始
  • 线性的数据结构(点击查看详情)
  • 使用[]表示
  • 列表是可变的
  • 列表不能一开始就定义大小
  • 列表是结合顺序表和链表的一种动态类型 2.1 初始化 定义一个新的空的列表,有两种方法yidong
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
list1 = []      # 这种方法更常用
list2 = list()  # 这个list()就是list类,在帮助文档中有说明

注意:在列表中不能一开始就定义列表大小,但是在其他语言中,往往建议初始化就要定义大小,这和语言的优化策略有关。

使用help()函数可以查看内置的帮助文档,这里摘取help(list)一部分,下面的魔术方法暂时忽略。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Help on class list in module builtins:

class list(object)
 |  list(iterable=(), /)    
 |  
 |  Built-in mutable sequence.  # 这说明了list是一种Python内置的可变的队列数据结构
 |  
 |  If no argument is given, the constructor creates a new empty list.  # 如果没有接收到参数,构造器建立一个新的空列表
 |  The argument must be an iterable if specified.# 如果指定参数,它必须是一个可迭代的对象,比如range(1,5)
 |  
 |  Methods defined here:
 |  
 |  __add__(self, value, /)
 |      Return self+value.
 |  
 |  __contains__(self, key, /)
 |      Return key in self.

这里演示指定一个可迭代对象为参数

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
list1=list(range(1,5))
print(list1)
--------------------
[1, 2, 3, 4]

如果给一个已经存在的列表赋值新的元素,那么它之前的元素就回收了,回收机制也就是之前提过的GC机制

2.2 索引访问

  • 索引(index)也叫作下标,相当于一个目录
  • 正索引:从左至右,从0开始,为列表中每一个元素编号
  • 负索引:从右到左,从-1开始
  • 正负索引不可以超界,否则引发异常IndexError
  • 为了方便理解,可以认为列表是从左至右排列的,左边是头部,右边是尾部,左边是上界,右边是下界

列表通过索引访问,list[index]index就是索引,使用中括号访问

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
list1 = [5,1,'h',3.2,[1,2]] #列表内的元素可以是任意对象
print("list1的第1号元素是"+list1[1])  # 利用索引查找元素
------------
list1的第1号元素是1

2.3 列表查询

  • index(value, start=0, stop=len(string))
    • 通过值value,从指定区间查找列表内的元素是否匹配
    • 匹配第一个就立即返回索引
    • 匹配不到就抛出异常ValueError
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
list1= ['a', 'b', 'c', 'c', 'd', 'e']
list1.index('c')    # 查找list1中第一个'c'元素的索引值
>>> 2
list1.index('c',3)  # 查找list1中从索引值3开始找到的第一个'c'元素的下标
>>> 3
list1.index('c',3, 4) # 查找list1中从索引值3开始到索引值4结束,找到的第一个'c'元素的下标
list1.index('c',4)  # 查找list1中从索引值4开始找到的第一个'c'元素的下标
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-3-4a6e298ce585> in <module>
      2 list1.index('c')
      3 list1.index('c',3)
----> 4 list1.index('c',4)

ValueError: 'c' is not in list
  • count(value):返回列表中匹配value的次数
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
list1= ['a', 'b', 'c', 'c', 'd', 'e']
list1.count('c')
>>> 2
  • len(list):返回列表list长度
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
list1= ['a', 'b', 'c', 'c', 'd', 'e']
len(list1)
>>> 6

2.4 列表元素修改

  • 索引访问修改
    • list(index) = value
    • 索引不能超界

    list1= ['a', 'b', 'c', 'c', 'd', 'e'] list1[1]='f' print(list1) >>> ['a', 'f', 'c', 'c', 'd', 'e'] 2.5 列表增加、插入元素

  • append(obj) -> None
    • 列表尾部追加元素,返回None
    • 返回None就意味着没有新的列表产生,就地修改
    • 时间复杂度是O(1)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
list1= ['a', 'b', 'c', 'c', 'd', 'e']
list1.append('f')
print(list1)
>>> list1= ['a', 'b', 'c', 'c', 'd', 'e', 'f']
  • insert(index, object) -> None
    • 在指定的索引index处插入元素object
    • 返回None就意味着没有新的列表产生,就地修改
    • 时间复杂度为O(n)
    • 索引超越上界,在尾部追加,超越下界,在头部追加
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
list1= ['a', 'b', 'c', 'c', 'd', 'e']
list1.insert(1, 'f')    # 在索引1处插入'f'元素,原来索引1处的元素的索引位置统统往后挪
print(list1)
>>> ['a', 'f', 'b', 'c', 'c', 'd', 'e']

append()和insert()都可以修改列表,但是append()比较常用,运行效率也比较快,而insert()则不太常用,一方面容易打乱原有的元素所在索引位置,另一方面运行效率不高,在列表中间插入一个元素会导致其后面的元素在内存中的位置都要挪动。

  • extend(iterable) -> None
    • 将可迭代对象的元素追加进来,返回None
    • 返回None就意味着没有新的列表产生,就地修改
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
list1=['a', 'b', 'c']
list2=['d', 'e']
list1.extend(list2)
print(list1)
>>> ['a', 'b', 'c', 'd', 'e']
  • + -> list
    • 连接操作,将两个列表连接起来
    • 产生新的列表,原列表不变
    • 本质上调用的是__add__()方法
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
list1=['a', 'b', 'c']
list2=['d', 'e']
list3 = list1 + list2
print(list3)
>>> ['a', 'b', 'c', 'd', 'e']
  • * -> list
    • 重复操作,将本列表元素重复n次,返回新的列表
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
list1=['a', 'b', 'c']
list2 = list1 * 3
print(list2)
>>> ['a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c']

2.6 列表删除元素

  • remove(value) -> None
    • 从左到右查找第一个匹配value的值,移除这个值
    • 就地修改
    • 效率和insert()类似
  • pop(index) -> item
    • 不指定索引index,就从列表尾部弹出一个元素
    • 指定索引index,就从索引处弹出一个元素
  • clear() -> None
    • 清除列表所有元素,剩下一个空列表
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
list1=['a', 'b', 'c', 'd', 'e']
list1.remove('a')
print(list1)
>>> ['b', 'c', 'd', 'e']
item = list1.pop()
print(list1)
>>> ['b', 'c', 'd']
print(item)
>>> e
list1.clear()   # 清空list1

clear()操作会触发gc垃圾回收机制,如果在服务器繁忙运行的时候,突然大规模内存需要gc垃圾回收,这时运行效率就会被拉低。

2.7 列表其他操作

  • reverse() -> None
    • 将列表元素反转,返回None
    • 就地修改
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
list1=['a', 'b', 'e', 'd', 'c']
list1.reverse()
print(list1)
>>> ['c', 'd', 'e', 'b', 'a']
  • sort(key=None, reverse=False) -> None
    • 对列表元素进行排序,就地修改,默认升序
    • reverse为True,反转,降序
    • key一个函数,指定key如何排序,如list.sort(key=functionname)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
list1=['a', 'b', 'e', 'd', 'c']
list1.sort()
print(list1)
>>> ['a', 'b', 'c', 'd', 'e']
------------------------------------
# 获取列表的第二个元素
def takeSecond(elem):
    return elem[1]
  
# 列表
random = [(2, 2), (3, 4), (4, 1), (1, 3)]
 
# 指定第二个元素排序
random.sort(key=takeSecond)
 
# 输出类别
print ('排序列表:', random)
>>> 排序列表:[(4, 1), (2, 2), (1, 3), (3, 4)]
  • in
    • [3,4] in [1, 2, [3, 4]],返回布尔值,可用作判断
    • for x in [1, 2, 3, 4] 在Python基础语法(一)有提及,可以回顾一下
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/05/30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
1 条评论
热度
最新
为什么我的显示不支持呢,notsupport,有开启的方法吗?
为什么我的显示不支持呢,notsupport,有开启的方法吗?
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
【Python入门】Python 63个内置函数超级详解
Python内置了一些非常精巧且强大的函数,对初学者来说,一般不怎么用到,但是偶尔会碰到,我也是用了一段时间python之后才发现,卧槽,还有这么好的函数,每个函数都非常经典,而且经过严格测试,使用内置函数,不用自己闭门造车,并且代码简洁易读了很多,真是方便又实用,值得花时间进行体系化研究学习。
黄博的机器学习圈子
2020/05/26
8260
【Python入门】Python 63个内置函数超级详解
Python第一周 学习笔记(3)
python3的int就是长整型,且没有大小限制,受限于内存区域的大小 int(x) 返回一个整数
py3study
2020/01/07
7770
@陈同学的专属Python教程之常见数据结构
扫码_搜索联合传播样式-标准色版 - 副本.png 数字 转化为数字 int(x) 将x转换为一个整数。 float(x) 将x转换到一个浮点数。 complex(x) 将x转换到一个复数,实数部分为 x,虚数部分为 0。 complex(x, y) 将 x 和 y 转换到一个复数,实数部分为 x,虚数部分为 y。x 和 y 是数字表达式。 # -*- coding: utf-8 -*- data = '123' print(int(data)+4) 四舍五入 #round() 方法返回浮点数 x
酒馆丁老师
2020/09/08
1.6K0
@陈同学的专属Python教程之常见数据结构
Python基础(03)
python的变量类型包括数字型:整数int 浮点型float 布尔型bool (真True假Flase)复数 complex 和非数字型 :字符串 列表 元组 字典 。今天介绍列表。
PM小王
2019/07/01
7590
Python3快速入门(三)——Pyth
Python3 中有六种标准数据类型: A、Number(数字) B、String(字符串) C、List(列表) D、Tuple(元组) E、Set(集合) F、Dictionary(字典) Python3 的六种标准数据类型中,Number(数字)、String(字符串)、Tuple(元组)是不可变的,List(列表)、Dictionary(字典)、Set(集合)是可变的。
py3study
2020/01/06
3.7K0
Python课程基础总结概括梳理【pyhton笔记】
Python3 手册学习:系统化全面化 视频学习:实用性高、学到了经验、用途 刷题平台:结合学习,事半功倍 1、Python可以同时为多个变量赋值,如a, b = 1, 2。 反斜杠()可以作为续行符 python库是可以其它语言编写,非常高效 python自身运行效率低于c 老师提供的学习网站http://sdlg.alphacoding.cn/course/292/chapters #格式化输出 a = 18 b = 12 print(f'今年{a}岁{b+1}')#这个更高效 #今年18岁13
来杯Sherry
2023/05/25
5200
教女朋友学 Python 第 3 天:语言元素
之前的文章中,我们已经对 Python 有所了解了,并且也学会了 Pycharm 的安装及使用。现在该开始正式进入主题了,接下来就要学习 Python 的相关语法,以及如何使用他们进行编程。
村雨遥
2021/03/15
8780
第一个Python程序(基础语法)
jupyter 工具的简单使用: jupyter 默认使用8888 的端口 通过web 访问即可 image.png Python 基础语法:(正题开始...) 注释—— # 标注的文本 数字 整数,不区分long和int 进制0xa、0o10、0b10 bool,2个值True、False 浮点数 1.2、3.1415、-0.12,1.46e9等价于1.46*109 复数,1+
江小白
2019/05/31
6820
python基础系列教程——python基础语法全解
Python是一种解释型(这意味着开发过程中没有了编译这个环节)、面向对象(支持面向对象的风格或代码封装在对象的编程技术)、动态数据类型的交互式(可在命令行中通过Python提示符及直接代码执行程序)高级程序设计语言。
全栈程序员站长
2022/09/15
1.2K0
Python程序与设计
概念:保留字是Python语言中已经被赋予特定意义的一些单词,开发程序时,不可以作为变量、函数、类、模块和其他对象的名称来使用。
青灯古酒
2023/10/16
2130
Python程序与设计
week02_python内置数据结构_
round() :四舍六入,五取偶 floor():向下取整 ceil():向上取整 int():取整数部分,和//整除一样
py3study
2020/01/14
2880
几个基础python防坑小常识
在 Python 中,所有东西都是对象,因此对于对象的任何实例检查都将返回True。
阿珍
2024/09/13
1360
几个基础python防坑小常识
PYTHON数据类型
Python3 中有六个标准的数据类型: Number(数字) String(字符串) List(列表) Tuple(元组) Sets(集合) Dictionary(字典) Number(数字) Python3 支持int、float、bool、complex(复数)。 在Python 3里,只有一种整数类型 int,表示为长整型,没有 python2 中的 Long。 像大多数语言一样,数值类型的赋值和计算都是很直观的。 内置的 type() 函数可以用来查询变量所指的对象类型。 >>> a, b, c,
企鹅号小编
2018/02/01
1.4K0
PYTHON数据类型
python3 内置函数详解
内置函数详解 abs(x) 返回数字的绝对值,参数可以是整数或浮点数,如果参数是复数,则返回其大小。 # 如果参数是复数,则返回其大小。 >>> abs(-25) 25 >>> abs(25) 25 all(iterable) all()会循环括号内的每一个元素,如果括号内的所有元素都是真的,或者如果iterable为空,则返回True,如果有一个为假的那么就返回False >>> all([]) True >>> all([1,2,3]) True >>> all([1,2,""]) Fa
程序员同行者
2018/06/22
9600
py基础语法1
数据类型包括整型(int),浮点型(float),字符串类型(str),布尔类型(bool)
code-child
2023/05/30
1450
py基础语法1
Python
概念:保留字是Python语言中已经被赋予特定意义的一些单词,开发程序时,不可以作为变量、函数、类、模块和其他对象的名称来使用。
青灯古酒
2023/10/16
1920
Python
Python之基础语法和六大数据类型
注释分为单行注释和多行注释两种,单行注释用#表示,多行注释用(三个双引号"“”“”")或‘(三个单引号’‘’‘’')表示。如下所示: ​​
用户10927761
2024/01/23
2972
Python之基础语法和六大数据类型
Python教程(三):基础数据类型
Python中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。
山禾说
2019/01/21
6510
02 . Python之数据类型
变量存储在内存中的值。这就意味着在创建变量时会在内存中开辟一个空间。基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中。 因此,变量可以指定不同的数据类型,这些变量可以存储整数,小数或字符.
iginkgo18
2020/09/27
1.8K0
02 . Python之数据类型
Python 基础一 (列表)
Python包含6中内建的序列,即列表、元组、字符串、Unicode字符串、buffer对象和 xrange 对象。最常见的是列表和元组。
数据STUDIO
2021/06/24
7550
相关推荐
【Python入门】Python 63个内置函数超级详解
更多 >
LV.0
这个人很懒,什么都没有留下~
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验