Python--基本数据类型(可变/不可变类型)
Python--基本数据类型

赋值格式:
- 变量名 赋值符号 值
查看数据类型的方法:
- type( )
1、整型 int
整型一般用于存储整数等
#int实例
age = 18
num = 100
···
2、浮点型 float
浮点型一般用于存储小数等
#float实例
NUM = 3.14
num = 1.456789
···
注·整型和浮点型可以叫做数字类型,主要用于数学运算、类型转换等
3、字符串 str
字符串格式
字符串主要用于记录描述性性质的数据
定义:字符串需要用引号括起来,单引号,双引号,三引号(没有赋值符号的三引号为注释)
字符串定义格式:
#空字符串
s1 = ''
#非空字符串
方式一: #单引号
num = 'one two three'
方式二: #双引号
num = "one two three"
方式三: #三引号:三个单引号
num = '''one two three'''
或
num = """one two three"""
字符串嵌套
为什么会有单引号双引号或者三引号,这么多种类,在字符串内,如果需要多次使用引号需要注意,引号的开始和结束的位置,例子如下:
#错误示范
word = '老师说:'学会python就能拿高薪。''
图示如下:


这样python解释器会认为字符串只有’老师说‘和后面的空字符串’ ‘。
#正确示范,引号嵌套
word = '老师说:"学会python就能拿高薪。"'
word1 = "老师说:'学会python就能拿高薪。'"


这样就没有问题了,注意引号的前后位置哦!
4、列表 list
列表用来存储多个数据并且可以方便取出任意个数。
取元素的方法:索引、切片
定义:列表是用中括号括起来,内部可以存放多个元素,元素与元素之间用逗号隔开,元素类型可以为任意数据类型。
列表定义格式:
#空列表
lst1 = []
#非空列表
lst2 = [1,2,3,'python']
lst3 = [1,2,3,'python',['java','php','c++']]
列表元素的下标位置

索引和切片:字符串,列表常用
列表举例子,索引取值,实例如下:
索引有两种方式:正索引、负索引
根据元素的位置来决定用那种方法,在列表前端用正索引,末尾用负索引
# 索引取值,取python
lst2 = [1, 2, 3, 'python']
print(lst2[3]) #正
print(lst2[-1]) #负
# 嵌套取值,取出java
lst3 = [1, 2, 3, 'python', ['java', 'php', 'c++']]
print(lst3[4][0])
print(lst3[-1][0])


切片取值的原理是左闭右开,不包含最后一位,切片取值实例如下:
#取出数字类型的元素,123,456,789
lst4 = [123,456,789,'name','age','hobby']
print(lst4[0:3]) #不包含第四个元素,所以取到第三个789


5、字典 dict
字典能够更加精确的存储数据,以键值对的形式存在
定义:字典是用大括号/花括号括起来,可以存放多个元素,元素与元素之间用逗隔开,对应的格式是KV键值对,{k:v}。
- 说明:
- K是对V的描述性性质的信息(一般情况下都是字符串)
- V是真正的数据,相当于变量的值,可以是任意数据类型
# 字典实例:
#空字典
dic = {}
#非空字典
dic1 = {'name': 'HammerZe', 'age': 18, 'hobby': 'girl'}
#字典无法使用索引取值,只能通过K取值
print(dic['name'])

6、布尔型 boll
布尔值是用于判断事物的对错,只有两种状态,True,False
特别注意!布尔值的变量名一般采用 is开头定义!
实例如下:
is_right = True
is_delete = False
is_alive = True
数据类型转换
在python中所有的数据类型都可以转换为布 尔值
布尔值为False的有:
0,None,'',[],{}····,其他情况一律为True
7、元组 tuple
元组与列表几乎相同,但是是不可变的,列表里的元素是可变的
定义:用小括号括起来,可以存放多个元素,元素之间用逗号隔开,元素不支持修改
#实例如下:
#空元组
tup = ()
print(type(tup))
#非空元组
tup1 = (1, 2, 3, 4, 5, 6,)
print(type(tup1))
tup2 = (1, 2, 3, 4, 5, 6)
print(tup1 == tup2) #结果为True,后面多一个逗号也是可以的

8 、集合 set
集合可以去重和关系运算
定义:用大括号/花括号括起来,可以存放多个元素,元素和元素之间用逗号隔开,只能存储不可变类型,和字典区别开。
#实例如下
#空集合
s = set()
print(type(s))
# 非空集合
s1 = {1, 2, 3, 4, 5, 6, 7}
print(s1,type(s1))

python中不可变数据类型和可变数据类型
查看内存地址的方法:id( )
如何区分可变与不可变
不可变数据类型更改后地址发生改变,可变数据类型更改地址不发生改变
- 不可变数据类型: 当该数据类型的对应变量的值发生了改变,那么它对应的内存地址也会发生改变,对于这种数据类型,就称不可变数据类型。
- 可变数据类型 :当该数据类型的对应变量的值发生了改变,那么它对应的内存地址不发生改变,对于这种数据类型,就称可变数据类型。
用一张表来说明:
| 数据类型 | 可变/不可变 |
|---|---|
| 整型 | 不可变 |
| 字符串 | 不可变 |
| 元组 | 不可变 |
| 列表 | 可变 |
| 集合 | 可变 |
| 字典 | 可变 |
实例如下:

#分别取可变和不可变的一种来举例子:
#整型
a = 1
print(id(a),type(a))
a = 2
print(id(a),type(a))
#结果
1354793072 <class 'int'>
1354793104 <class 'int'>
#内存地址发生了改变,所以是不可变类型
#列表:
lst = [1, 2, 3, 4, 5]
print(lst, id(lst), type(lst))
lst[0] = 'one'
print(lst, id(lst), type(lst))
#结果:
[1, 2, 3, 4, 5] 2616978892744 <class 'list'>
['one', 2, 3, 4, 5] 2616978892744 <class 'list'>
#内存地址没有发生改变,所以是可变类型
看完例子是不是明白了可变与不可变的原理了!

Python--基本数据类型(可变/不可变类型)的更多相关文章
- 7、python基本数据类型之散列类型
前言:python的基本数据类型可以分为三类:数值类型.序列类型.散列类型,本文主要介绍散列类型. 一.散列类型 内部元素无序,不能通过下标取值 1)字典(dict):用 {} 花括号表示,每一个元素 ...
- python的可变数据类型和不可变类型
python里面一切皆对象 ython的每个对象都分为可变类型和不可变类型 整形,浮点型,字符串,元组属于不可变类型,列表,字典是可变类型 不可变数据类型 对不可变类型的变量重新赋值,实际上是重新创建 ...
- Python(可变/不可变类型,list,tuple,dict,set)
补充:(可用操作技巧) >>> x=900 >>> y=900 >>> x==y True >>> type(x) is typ ...
- python基础之可变数据类型与不可变数据类型
一.什么可变数据类型和不可变数据类型 可变数据类型:value值改变,id值不变:不可变数据类型:value值改变,id值也随之改变. 二.如何确定一种数据类型是可变的还是不可变的 根据可变数据类型与 ...
- python 可变数据类型和不可变数据类型(7)
python数据类型分别有整数int / 浮点数float / 布尔值bool / 元组tuple / 列表list / 字典dict,其中数据类型分为两个大类,一种是可变数据类型:一种是不可变数据类 ...
- 一道问题引出的python中可变数据类型与不可变数据类型
一. 问题的提出 我们先来看两个对比 第一道题,当对象为整数时,最终结果:b = 2, a = 1,b的变化没有引起a的变化 a = 1 b = a b += 1 print(a) print(b) ...
- 005 python 整数类型/字符串类型/列表类型/可变/不可变
可变/不可变类型 可变类型 ID不变的情况下,值改变,则称之为可变类型,如列表,字典 不可变类型 值改变,ID改变,则称之为不可变类型,如 整数 字符串,元组 整数类型 int 正整数 用途就是记录年 ...
- Python 可变数据类型与不可变数据类型
浅拷贝和深拷贝 Python数据都是存放到内存中的,Python的数据又分为可变和不可以变 可变数据(修改了值后,不会改变内存地址,修改的值还是指向相同的内存地址) 字典 # 列表是可变 x = [1 ...
- python函数参数是值传递还是引用传递(以及变量间复制后是否保持一致):取决于对象内容可变不可变
函数参数传递本质上和变量整体复制一样,只是两个变量分别为形参a和实参b.那么,a=b后,a变了,b值是否跟着变呢?这取决于对象内容可变不可变 首先解释一下,什么是python对象的内容可变不可变? p ...
随机推荐
- 深度学习|基于LSTM网络的黄金期货价格预测--转载
深度学习|基于LSTM网络的黄金期货价格预测 前些天看到一位大佬的深度学习的推文,内容很适用于实战,争得原作者转载同意后,转发给大家.之后会介绍LSTM的理论知识. 我把code先放在我github上 ...
- robot framework使用SeleniumLibrary打开谷歌浏览器无头模式
注:我百度了一圈并没有发现类似的教程 robot framework的seleniumLibrary一般打开浏览器的方式是用关键字 Open Browser 但是,阅读seleniumLibrary ...
- Python:安装opencv出现错误Could not find a version that satisfies the requirement numpy==1.13.3 (from versions: 1.14.5, 1.14.6, 1.15.0rc2, 1.15.0, 1.15.1, 1.15.2, 1.15.3, 1.15.4, 1.16.0rc1, 1.16.0rc2,
安装opencv的时候,出现numpy的版本不匹配,卸载了不匹配的版本,重新安装却是一点用都没有,后面尝试了一下这里的提示pip更新,居然安装成功了,看来pip的版本过低真是误事啊. 报错是: Cou ...
- Bert文本分类实践(一):实现一个简单的分类模型
写在前面 文本分类是nlp中一个非常重要的任务,也是非常适合入坑nlp的第一个完整项目.虽然文本分类看似简单,但里面的门道好多好多,作者水平有限,只能将平时用到的方法和trick在此做个记录和分享,希 ...
- Oracle基础命令操作总结
第1章 oracle命令集 1.1 重启数据库 1.1.1 启动数据库 su -root 切换到oracle安装用户下,我的是root source .bash_pro ...
- 统计学习:线性支持向量机(SVM)
学习策略 软间隔最大化 上一章我们所定义的"线性可分支持向量机"要求训练数据是线性可分的.然而在实际中,训练数据往往包括异常值(outlier),故而常是线性不可分的.这就要求我们 ...
- 从零入门 Serverless | 企业级 CI/CD 工具部署 Serverless 应用的落地实践
背景知识 通过以往几节课程的学习,相信大家对于 SAE 平台已经有了一定的了解.SAE 为客户免除了很多复杂的运维工作,开箱即用.按用量付费:与此同时 SAE 提供了丰富的 Open API,可以很容 ...
- c++ fstream feekg讨论
#include <iostream> #include <fstream> using namespace std; int main() { std::ifstream f ...
- Java(7)流程控制语句中的for、while、do while循环
作者:季沐测试笔记 原文地址:https://www.cnblogs.com/testero/p/15201543.html 博客主页:https://www.cnblogs.com/testero ...
- Windows内核开发-10-监听对象
Windows内核开发-10-监听对象 Windows内核除了可以监听进程,线程.dll还可以监听特定的对象和注册表.这里先讲一下监听对象. 监听对象 内核提供了一种可以监听对特定的对象类型的句柄进行 ...