python学习之路 二 :基本数据类型
本节重点
理解什么是变量?
掌握各种数据类型
理解可变类型和不可变类型
一.变量和常量
变量:
作用:存贮程序的中间结果在内存里,以备后边的程序调用
定义规范:
变量名只能是 字母、数字活下划线的任意组合
变量名的第一个字符不能是数字
python中的关键字不能作为变量名
命名习惯:
驼峰体 FilePath
下划线体 file_path(官方推荐)
不建议的命名习惯:
变量名为中文、拼音
变量名过长
变量名词不达意
与c#对比:不需要定义变量的类型
变量的应用:
a=1
b=a # 给变量b赋值变量a的内存地址,该内存地址指向1
a=2 # 修改a的内存地址指向2,但是变量b的内存地址不变
print(a) #2
print(b) #1
常量:
特点:常量即指不变的量,如pai 3.141592653,或在程序运行过程中不会改变的量
在python中没有一个专门的语法代表常量,规范使用变量名全部大写代表常量
二.什么是数据类型?python中有哪些数据类型?
我们人类可以很容易的愤青数字和字符的区别,但是计算机并不能呀,计算机虽然很强大,但从某种角度上看又很傻。除非你明确的告诉它,1 是数字,“中国”是文字,否则它分不清1和“中国”的区别。因此,每种编程语言里都有数据类型,用来对数据进行明确的划分。
python中的数据类型按可分为两种:基本类型和数据集
python中的基本类型有:Number(数字类型)、String(字符串类型)
python中的数据集有:List(列表类型)、Tuple(元祖类型)、Dict(字典类型)、Set(集合类型)
三.Number类型
Number类型有:int(整型)、float(浮点型)、complex(复数型)、bool(布尔型)
int
int用来表示整数,在32位操作系统中,它的取值范围为 -2*31~2*32-1,在64位操作系统中它的取值范围为-2*61~2*61-1
定义:变量名 = 值(数字)
变量名 = int(值)
float
float用来表示小数
定义:变量名 = 值(小数)
变量名 = float(小数)
精度问题:
获取更高的精度:借助decimal模块的“getcontext“和“Decimal“ 方法
- from decimal import *
- getcontext().prec = 50 # 设置精度为50位精准精度a = Decimal(1)/Decimal(3)#注,在分数计算中结果正确,如果直接定义超长精度小数会不准确
- #a 的值为 Decimal('0.33333333333333333333333333333333333333333333333333')
- from decimal import *
complex
complex用来表示复数
定义:变量名 = a + bj
变量名 = complex(a,b)
bool
bool用来表示对/错,bool类型只有两个值 True/False。0/1,空集合/有值集合也可以用来表示bool的True/False。
四.String类型
文本str
字节bytes
在python中 加了引号的字符都被认为是字符串。
单引号、双引号:无明显差别,根据字符串内容选择。 strval = '我是"小明"',strval2 = "I'm xiaoming"。不支持自动换行,需要再结尾加 。
多引号:支持自动换行。字符串内容中既有'又有"时使用。
字符串格式化:%s(string) %d(int) %f(floag) 占位符、 % 连接符
- info = """
- ------info of %s ------
- Name: %s
- Age: %s
- Job: %s
- HomeTown %s
- --------- end ---------
- """ %(name,age,job,hometown)
常用操作
- #索引
- s = 'hello'
- >>> s[1]
- 'e'
- >>> s[-1]
- 'o'
- >>> s.index('e')
- 1
- #查找
- >>> s.find('e')
- 1
- >>> s.find('i')
- -1
- #移除空白
- s = ' hello,world! '
- s.strip()
- s.lstrip()
- s.rstrip()
- s2 = '***hello,world!***'
- s2.strip('*')
- #长度
- >>> s = 'hello,world'
- >>> len(s)
- 11
- #替换
- >>> s = 'hello world'
- >>> s.replace('h','H')
- 'Hello world'
- >>> s2 = 'hi,how are you?'
- >>> s2.replace('h','H')
- 'Hi,How are you?'
- #切片
- >>> s = 'abcdefghigklmn'
- >>> s[0:7]
- 'abcdefg'
- >>> s[7:14]
- 'higklmn'
- >>> s[:7]
- 'abcdefg'
- >>> s[7:]
- 'higklmn'
- >>> s[:]
- 'abcdefghigklmn'
- >>> s[0:7:2]
- 'aceg'
- >>> s[7:14:3]
- 'hkn'
- >>> s[::2]
- 'acegikm'
- >>> s[::-1]
- 'nmlkgihgfedcba'
五.List类型
list列表,可以用来贮存所有类型的对象的有序集合。
定义:[]内以逗号分隔,按照索引,存放各种数据类型,每个位置代表一个元素
1.列表的创建
- list_test=[‘张三‘,‘李四’,'alex']
- #或
- list_test=list('alex')
- #或
- list_test=list([‘张三‘,‘李四’,'alex'])
2.列表的特点和常用操作
特性:a.可以存放多个值
b.按照从左到右的顺序定义列表元素,下标从0开始顺序访问,有序
常用操作:
- #索引
- >>> l = ['egon','alex','seven','yuan']
- >>> l[0]
- 'egon'
- >>> l[2]
- 'seven'
- #切片
- >>> l[0:2]
- ['egon', 'alex']
- >>> l[2:5]
- ['seven', 'yuan']
- >>> l[:2]
- ['egon', 'alex']
- >>> l[2:]
- ['seven', 'yuan']
- >>> l[:]
- ['egon', 'alex', 'seven', 'yuan']
- >>> l[::2]
- ['egon', 'seven']
- >>> l[::-1]
- ['yuan', 'seven', 'alex', 'egon']
- #追加
- >>> l.append("eva")
- >>> l
- ['egon', 'alex', 'seven', 'yuan', 'eva']
- #删除
- >>> l.remove('eva')
- >>> l
- ['egon', 'alex', 'seven', 'yuan']
- >>> l.pop()
- 'yuan'
- >>> l
- ['egon', 'alex', 'seven']
- >>> l.pop(2)
- 'seven'
- >>> l
- ['egon', 'alex']
- #长度
- >>> len(l)
- 3
- #包含
- >>> 'seven' in l
- True
- >>> 'yuan' in l
- False
- #循环:为什么是“i”?
- >>> for i in l:
- print(i)
- egon
- alex
- seven
3.列表和字符串
列表转字符串:str1 = "".join(list1)
字符串转列表:l2 = list(str1)或者l2 = str2.split(',')
补充:range(n) 生成区间为[0,n)的list集合,常用于for循环
六.tuple类型
元组与列表类似,是不可变的列表
特性:
1.可存放多个值
2.不可变
3.按照从左到右的顺序定义元组元素,下标从0开始顺序访问,有序
元组的创建和常用操作
- 创建
- ages = (11, 22, 33, 44, 55)
- #或
- ages = tuple((11, 22, 33, 44, 55))
- 常用操作
- #索引
- >>> ages = (11, 22, 33, 44, 55)
- >>> ages[0]
- 11
- >>> ages[3]
- 44
- >>> ages[-1]
- 55
- #切片:同list
- #循环
- >>> for age in ages:
- print(age)
- 11
- 22
- 33
- 44
- 55
- #长度
- >>> len(ages)
- 5
- #包含
- >>> 11 in ages
- True
- >>> 66 in ages
- False
- >>> 11 not in ages
- False
元组特性详解
1.可存放多个值
如果元组中只有一个值 t = (1,)
元祖中不仅可以存放数字、字符串,还可以存放更加复杂的数据类型
2.不可变
元组本身不可变,如果元组里存放了其他可变元素,这些可变元素可以改变
七.dict类型
字典是python语言中唯一的映射类型。注:字典的查找效率要比list、tuple高
定义:{key1:value1,key2:value2}
说明:1.键与之用冒号“:”分开
2.项与项用“,”分开
特性:
1.key-value结构
2.key必须可hash,且必须为不可变数据类型,必须唯一
3.可存放任意多个值、可修改、可以不唯一
4.无序
字典的创建和常用操作
- #字典的创建
- person = {"name": "alex", 'age': 20}
- #或
- person = dict(name='seven', age=20)
- #或
- person = dict({"name": "egon", 'age': 20})
- #或
- person = dict((['name','苑昊'],['文周',18]))
- {}.fromkeys(seq,100) #不指定100默认为None
- #注意
- >>> dic={}.fromkeys(['k1','k2'],[])
- >>> dic
- {'k1': [], 'k2': []}
- >>> dic['k1'].append(1)
- >>> dic
- {'k1': [1], 'k2': [1]}
- #字典的常见操作
- 键、值、键值对
- 1、dic.keys() 返回一个包含字典所有KEY的列表;
- 2、dic.values() 返回一个包含字典所有value的列表;
- 3、dic.items() 返回一个包含所有(键,值)元祖的列表;
- 4、dic.iteritems()、dic.iterkeys()、dic.itervalues() 与它们对应的非迭代方法一样,不同的是它们返回一个迭代子,而不是一个列表;
- 新增
- 1、dic['new_key'] = 'new_value';
- 2、dic.setdefault(key, None) ,如果字典中不存在Key键,由 dic[key] = default 为它赋值;_
- 删除
- 1、dic.pop(key[,default]) 和get方法相似。如果字典中存在key,删除并返回key对应的vuale;如果key不存在,且没有给出default的值,则引发keyerror异常;
- 2、dic.clear() 删除字典中的所有项或元素;
- 修改
- 1、dic['key'] = 'new_value',如果key在字典中存在,'new_value'将会替代原来的value值;
- 2、dic.update(dic2) 将字典dic2的键值对添加到字典dic中
- 查看
- 1、dic['key'],返回字典中key对应的值,若key不存在字典中,则报错;
- 2、dict.get(key, default = None) 返回字典中key对应的值,若key不存在字典中,则返回default的值(default默认为None)
- 循环
- 1、for k in dic.keys()
- 2、for k,v in dic.items()
- 3、for k in dic
- 长度
- 1、len(dic)
八.集合类型
集合是一个数学的概念,由一个或者多个确定的元素所构成的整体叫做集合
特性:
1.确定性
2.互异性(去重)
3.无序性
集合的定义:
#可变集合
s = {1,2,3,4}
#不可变集合
s = frozenset({1,2,3,4})
集合的运算关系
1.交集
- l= {'张三','李四','老男孩'}
- p = {'张三','李四','alex'}
- print(l.intersection(p))
- print(l&p)
2.合集
- l= {'张三','李四','老男孩'}
- p = {'张三','李四','alex'}
- print(l.union(p))
- print(l|p)
3.并集
- l= {'张三','李四','老男孩'}
- p = {'张三','李四','alex'}
- print(l.difference(p))
- print(l-p)
4.对称差集
- a = {1,2,3}
- b = {2,3,4,5}
- print(a.symmetric_difference(b))
- print(a^b)
5.包含关系
- in,not in:判断某元素是否在集合内
- ==,!=:判断两个集合是否相等
集合的常见操作
1.增加
单个元素的增加 : add(),add的作用类似列表中的append
对序列的增加 : update(),而update类似extend方法,update方法可以支持同时传入多个参数:
- >>> a={1,2}
- >>> a.update([3,4],[1,2,7])
- >>> a
- {1, 2, 3, 4, 7}
- >>> a.update("hello")
- >>> a
- {1, 2, 3, 4, 7, 'h', 'e', 'l', 'o'}
- >>> a.add("hello")
- >>> a
- {1, 2, 3, 4, 'hello', 7, 'h', 'e', 'l', 'o'}
2.删除
集合删除单个元素有两种方法:
元素不在原集合中时:
set.discard(x)不会抛出异常
set.remove(x)会抛出KeyError错误
- >>> a={1,2,3,4}
- >>> a.discard(1)
- >>> a
- {2, 3, 4}
- >>> a.discard(1)
- >>> a
- {2, 3, 4}
- >>> a.remove(1)
- Traceback (most recent call last):
- File "<input>", line 1, in <module>
- KeyError: 1
pop():由于集合是无序的,pop返回的结果不能确定,且当集合为空时调用pop会抛出KeyError错误,
clear():清空集合
- >>> a={3,"a",2.1,1}
- >>> a.pop()
- >>> a.pop()
- >>> a.clear()
- >>> a
- set()
- >>> a.pop()
- Traceback (most recent call last):
- File "<input>", line 1, in <module>
- KeyError: 'pop from an empty set'
九.可变类型和不可变类型
通过操作修改该类型的实例,内存地址保持不变得是可变类型
python学习之路 二 :基本数据类型的更多相关文章
- Python学习笔记(二)——数据类型
1.数据类型 Python有五个标准的数据类型: Numbers(数字) String(字符串) List(列表) Tuple(元组) Dictionary(字典) 2.Python数字类型 Pyth ...
- python学习笔记(二)— 数据类型
一.变量.数据类型 1.计算机顾名思义就是可以做数学计算的机器,因此,计算机程序理所当然地可以处理各种数值.但是,计算机能处理的远不止数值,还可以处理文本.图形.音频.视频.网页等各种各样的数据,不同 ...
- Python学习之路二
今天主要学习了列表,python的列表真的事太强大了,由于内容比较多,今天就先简单的介绍一下新学的几个成员函数吧. 首先我们要了解list是一种序列类型,其构造方式有四种形式: (1)空列表 [] ( ...
- python学习之路二(字符串,字典,序列和元组)
# -*- coding: utf-8 -* ''' Created on 2013-7-26 @author: lixingle ''' #!/usr/bin/python import math# ...
- python学习之路-day2-pyth基础2
一. 模块初识 Python的强大之处在于他有非常丰富和强大的标准库和第三方库,第三方库存放位置:site-packages sys模块简介 导入模块 import sys 3 sys模 ...
- Python学习之路【第一篇】-Python简介和基础入门
1.Python简介 1.1 Python是什么 相信混迹IT界的很多朋友都知道,Python是近年来最火的一个热点,没有之一.从性质上来讲它和我们熟知的C.java.php等没有什么本质的区别,也是 ...
- python学习之路------你想要的都在这里了
python学习之路------你想要的都在这里了 (根据自己的学习进度后期不断更新哟!!!) 一.python基础 1.python基础--python基本知识.七大数据类型等 2.python基础 ...
- Python学习之路-Day2-Python基础2
Python学习之路第二天 学习内容: 1.模块初识 2.pyc是什么 3.python数据类型 4.数据运算 5.bytes/str之别 6.列表 7.元组 8.字典 9.字符串常用操作 1.模块初 ...
- python精进之路1---基础数据类型
python精进之路1---基本数据类型 python的基本数据类型如上图,重点需要掌握字符串.列表和字典. 一.int.float类型 int主要是用于整数类型计算,float主要用于小数. int ...
随机推荐
- jbpm角色审批
可分配是一个部门或角色组,也可以选择一个表达式操作,提交任务时可以根据权限过滤这个部门或组的用户中选择一个可操作用户 <task name="审核"> ...
- 使用ConfigFilter
ConfigFilter的作用包括: 从配置文件中读取配置 从远程http文件中读取配置 为数据库密码提供加密功能 1 配置ConfigFilter 1.1 配置文件从本地文件系统中读取 <be ...
- 解决linux下root运行Elasticsearch异常
如果以root身份运行将会出现以下问题 root@yxjay:/opt/elasticsearch-2.3.5/bin# ./elasticsearchException in thread &quo ...
- java 内存溢出
不健壮代码的特征及解决办法 1.尽早释放无用对象的引用.好的办法是使用临时变量的时候,让引用变量在退出活动域后,自动设置为null,暗示垃圾收集器来收集该对象,防止发生内存泄露. 对于仍然有指针指向的 ...
- 转 Android:文件下载和写入SD卡学习小结
转自 http://blog.csdn.net/zzp_403184692/article/details/8160739 一.文件下载 Android开发中,有时需要从网上下载一些资源以供用户使 ...
- C++——堆、栈、静态存储区
栈 堆 静态存储区 生命周期 函数结束即释放 new,malloc开辟,delete,free释放 释放前,一直存在 最长,程序退出才释放 程序.局部变量 new,malloc申请的空间,用于 ...
- 使用批处理命令设置windows系统的ip地址和dns
找到对应的网卡名称 使用命令:ipconfig ipconfig/all Windows IP Configuration Host Name . . . . . . . . . . . . : D5 ...
- c++ 备忘录模式(memento)
备忘录模式:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态.这样以后就可将该对象恢复到原先保存的状态[DP].举个简单的例子,我们玩游戏时都会保存进度,所保存的进度以文件的 ...
- 一些好用的 Oracle 批处理和语句
# 备份脚本 backup.bat @ECHO OFF COLOR 0A SET DaysAgo=1 SET Today=%date:~0,4%%date:~5,2%%date:~8,2% EXP u ...
- Win10 提升系统响应速度
转载百度经验: https://jingyan.baidu.com/article/54b6b9c0e9d61e2d583b4719.html 1.鼠标左键点击开始按钮,然后点击菜单中的设置,进入设置 ...