python学习日记(基础数据类型及其方法02)
python的变量
python中的变量不需要声明,变量载使用前必须被赋值,变量被赋值以后才会被创建。
在python中变量就是变量,没有数据类型。我们所说的类型是变量所指向内存中的对象的类型。
python允许同时为多个变量赋值
a,b,c = 1,2,'aaa'
基础数据类型
python3中有6个标准的数据类型:使用type()函数可以查看变量所指的数据类型。
不可变数据类型:Number(数字),String(字符串),Tuple(元组) 可变数据类型:List(列表),Dictionary(字典),Set(集合)
一、Number(数字)
int:计算机是二进制,所以有时候用十六进制表示整数比较方便,十六进制用"0x"前缀和0-9,a-f表示,例如:0xff20,0xa3d53,等等。
float:浮点数是因为使用科学计数法的话,小数点位置是可以变动的,比如1.23*10²=12.3*10,对于很大/很小的浮点数,必须用科学记数法表示,10用e表示,1.23*10⁸=1.23e8
或者12.3e7,同理,0.0123可以写作1.23*e-2。
注意:整数和浮点数在计算机内部存储的方式不同,整数运算永远是精确的,浮点数在运算的时候可能会由于四舍五入造成一些误差。
bool:True/False
complex:python支持复数a+bj,a:实部,b:虚部或者complex(a,b),a,b均为浮点型。
二、String (字符串)
字符串用单引号 ' 或双引号 " 括起来,可以使用反斜杠 \ 转义特殊字符。
截取 例:str[1:2] 顾首不顾尾;+ 是字符串的拼接,* 是字符串的复制,*N为复制N次。
转义字符 \ 可以转义很多字符,\n表示换行,\t表示制表符,\本身也要转义就是 \\
如果一个字符串里的所有字符都不需要转义可以用 r '字符串',内部字符不转义
print('hello\n12\t3')
print(r'hello\n123')
print('I\'m"123\tOK"')
三、Tuple (元组)
元组与列表非常类似,数据不可改变。不可变的tuple的意义就在于代码更加安全。
不过tuple里面如果含有列表,列表的内容是可以修改的,这就造成了一种假象:即tuple可以”改变“。tuple的不变是指每个元素的指向不变,请不要混淆。
理解了”指向不变“后,如果想创建一个内容也不变的元组怎么办呢?那就需要tuple的每个元素本身也不可变。
tuple的歧义:
t2 = (1)#错误定义,定义的不是元组,是1这个数字,产生了歧义
print(t2)
t1 = (1,)#正确定义,加个“,”来消除歧义
print(t1) #显示也会有一个“,”,以免误解成数学计算意义上的括号
四、List (列表)
列表简介
a = [1,2,3,4,5]
a[0] = 4#改变数据
a[0:2] = [7,8]#改变数据
a[0:3] = [] #选取的内容设为空
列表值可以改变,索引,截取,拼接,重复等
列表增加
append()增加,insert()增加
list = ['a','b','c']#创建列表
print(len(list))#可以用len获取列表的元素个数
print(list[0])#用索引访问列表的元素,超出范围会报错
list.append('d')#使用append()方法向列表中添加元素,默认添加到列表尾部
print(list)
list.insert(0,'e')#还可以用insert()添加到指定的位置
print(list)
索引插入
索引某个元素,插入其前面
employee = ['a','f','d','s']
employee.insert(employee.index('d'),'我在d的前面')
print(employee)
extend()
迭代增加----iterable 可迭代的
list1 = ['a','f','d','w','e']
list1.extend('三字经')#拆分到元素进行迭代增加(字符串)
print(list1)
list2 = ['a','f','d','w','e']
list2.extend([1,2,3,'三字经',[1,2,3]])#观察运行结果进行对比分析(列表),实现了列表的合并
print(list2)
列表删除
pop()
list.pop() #删除列表末尾的元素,only once
print(list)
list.pop(0) #删除列表指定位置的元素
print(list)
.remove()
删除列表元素
list = ['a','b','c']
list.remove('b')#删除指定的元素
print(list)
.clear()
清空列表
list = ['a','b','c']
list.clear()#清空列表
print(list)
del list
删除列表
list1 = ['a','b','c']
del list1
print(list1)
切片删除
list1 = ['a','b','c','d','e']
del list1[2:]
print(list1)
列表改:
s = ['a','f','d','w','e']
s[0] = ''#用赋值去改
print(s)
s[0:2] = ''#切片迭代,同extend
print(s)
s[0:2] = [1,2,3,4,5,['aa','bb']]
print(s)
排序
.sort()
list1 = ['a','f','d','w','e']
print(list1.sort())#无法排序,输出none list1.sort()#正确输出,默认升序
print(list1)
list1.sort(reverse=True)#降序排序,reverse默认为False
print(list1) l2 = sorted(list1)#临时排序
print(l2)
list1 = ['a','f','d','w','e']
list1.reverse()#反转输出
print(list1)
列表嵌套
前面有说到。列表可以存储不同的数据类型,比如列表里面包含了另一个列表,那要如何访问呢?
list2 = ['c','d','e']
list1 = ['a','b',list2]
print(list1)
print(list1[2][0])
这样的情况可以看成是一个二维数组,当然,也有,三维、四维..数组等,不过用到的很少。
五、Dictionary (字典)
字典简介
列表是有序的对象集合,字典是无序的对象集合。
两者的区别之处在于:字典中的元素是通过键来存取的,而不是通过偏移存取。
字典是一种映射的类型,用大括号"{}"表示。他是一个无序的 键(key) : 值(value) 对集合,键值key必须用不可变数据类型,同一个字典中键唯一。
内置函数有clear():清空字典内的所有数据keys(),values()
字典基本操作
创建、增加、输出、keys(),values()
dict = {}#创建空字典
dict['name'] = 'Gruffalo' #空字典添加数据
dict['age'] = ''
print(dict)
print(dict['name'])
print(dict['age']*8)
info = {'name':'polar-bear','age':'','location':'north pole'}
print(info)
print(info.keys())#显示所有键
print(info.values())#显示所有值
补充:items()
dic1 = {'age':1,'name':'siri','sex':'male'}
print(dic1.items())
#用两个参数搭配for循环进行格式化输出
for k,v in dic1.items():
print(k,v,end=' *//分割线//* ')#end可以平常随意练习
增改+1
dic1 = {'age':1,'name':'siri','sex':'male'}
dic1['location'] = 'beijing'#无则增
print(dic1)
dic1['location'] = 'shanghai'#有则改
print(dic1)
.setdefault()方法
dic1 = {'age':1,'name':'siri','sex':'male'}
dic1.setdefault('name')
print(dic1)
dic1.setdefault('location')#没有就添加key,默认value为None
print(dic1)
dic1.setdefault('living','beijing')
print(dic1)
.pop()方法
dic1 = {'age':1,'name':'siri','sex':'male'}
print(dic1)
print(dic1.pop('age'))#指定key去删除,默认返回值value
print(dic1)
print(dic1.pop('age','成功删除'))#指定key去删除,可自定义返回值
print(dic1)
popitem()
dic1 = {'age':1,'name':'siri','sex':'male'}
print(dic1.popitem())#有返回值,返回的元组里面是键值对
print(dic1)
print(dic1.popitem())#有返回值,返回的元组里面是键值对
print(dic1)
#经测,是为随机删除,当前python版本为python3.5.4
del函数
dic1 = {'age':1,'name':'siri','sex':'male'}
del dic1['age']#根据key删除键值对
print(dic1)
del dic1['location']#删除不存在key会报错
print(dic1)
dic1 = {'age':1,'name':'siri','sex':'male'}
dic1.clear()#清空字典
print(dic1)
dic1 = {'age':1,'name':'siri','sex':'male'}
del dic1#删除字典
print(dic1)
.update
dic1 = {'age':1,'name':'siri','sex':'male'}
dic2 = {}
dic2.update(dic1)
print(dic1)
print(dic2)#空字典dict2完全复制字典dict1的所有内容
dic1 = {'age':1,'name':'siri','sex':'male'}
dic3 = {'age':20,'location':'beijing'}
print(dic1)
print(dic3)
dic3.update(dic1)
print(dic3)
#可以看到,具有相同key的,value被覆盖,没有的则添加进去
遍历输出方式
dic1 = {'age':1,'name':'siri','sex':'male'}
for i in dic1:
print(i)#默认按key进行输出
for i in dic1.keys():
print(i)
for i in dic1.values():
print(i)
如果key不存在的话,就会报错:(引发异常)
info['job']
想要避免报错的话,有两种方法:
1,通过用in 判断key是否存在
print('job' in info)
2,通过dict内置方法get(),如果key不存在,返回none,当然,你也可以自定义返回值
print(info.get('job'))
print(info.get('job','key不存在'))
dict的嵌套
dic = {
'name':['python','java','c'],
'web':{
'html':'',
'css':'',
'js':''
},
'location':'beijing'
}
print(dic)
#把location值改为shanghai
dic['location'] = 'shanghai'
print(dic)
dic = {
'name':['python','java','c'],
'web':{
'html':'',
'css':'',
'js':''
},
'location':'beijing'
}
print(dic)
#在name 键的value增加一个SQL
dic['name'].append('SQL')
print(dic)
dic = {
'name':['python','java','c'],
'web':{
'html':'',
'css':'',
'js':''
},
'location':'beijing'
}
print(dic)
#以下是自己错误使用方法,append()没有返回值,sort(),reverse也是
dic['name'] = dic['name'].append('test')
print(dic)
#sort,reverse也无返回值
s = [1,3,5,2,8,4,6]
print(s.sort())
print(s.reverse())
dic = {
'name':['python','java','c'],
'web':{
'html':'',
'css':'',
'js':''
},
'location':'beijing'
}
print(dic)
#把java变成大写
dic['name'][1] = dic['name'][1].upper()
print(dic)
#web里面再添加一键值对'go':'999'
dic['web']['go'] = ''
print(dic)
dict和list的比较:
dict:1,插入和查找的速度很快,不会随着key的增加而减慢;2,需要占用大量的内存,浪费内存。
list: 1,插入和查找的速度随着元素的增加而增加;2,占用空间小,浪费内存少。
所以,dict是用空间换取时间的一种方法。
六、Set (集合)
set简介
set和dict类似,也是一组key的集合,但没有存储value。由于key值不能重复,所以,在set中,没有重复的key。
s1 = set([1,2,3,4])#创建一个set,需要提供一个list作为输入集合
print(s1)
s2 = set([1,2,2,3,3,5,6,4,2,8,1])#自动过滤重复值
print(s2)
set的基本操作
add()
通过add()方法可以添加元素到set中,可以添加重复的值,但不会有效果。
s1.add(5)
print(s1)
s1.add(2)
print(s1)
update迭代增加
int类型不可迭代
set1 = {1,2,3,4,5}
set1.update('我爱中国')
print(set1)
pop
{1,2,3,4,5,'a','b'}
set1.pop()#随机删除
print(set1)
clear
{1,2,3,4,5,'a','b'}
set1.clear()#清空集合
print(set1)
del
3,4,5,'a','b'}
del set1#删除集合
print(set1)
remove()
通过remove()方法可以删除元素。
s1.remove(5)
print(s1)
集合运算
可以看成数学上的集合,可以进行相应的集合运算
s1 = set([1,2,3,4])
s2 = set([1,2,2,3,3,5,6,4,2,8,1])
print(s1 - s2)#差集
print(s2 - s1)#差集
print(s2 | s1)#并集
print(s2 & s1)#交集
print(s1 ^ s2)#不同时存在的元素,不要与差集进行混淆
子集与超集
,2,3,4,5}
set2 = {1,2,3,4,5,'a','b'}
print(set1 < set2)#判断set1 是否是 set2的子集
print(set1.issubset(set2)) print(set2 > set1)#判断set2 是否是 set1的超集
print(set2.issuperset(set1))
frozenset
frozenset不可变集合,让集合变成不可变类型。
s = frozenset('好好学习天天向上')
print(s,type(s))
成员测试
s1 = set([1,2,3,4])#观察两个集合区别
if 1 in s1:#引号疑惑(列表元素无引号为整数,不属于字符串,所以条件语句也不能加引号)
print(''+'在集合中')
else:
print(''+'不在集合中')
a = set('abracadabra')
if 'a' in a:#引号疑惑(字符串引号)
print('yes')
else:
print('no')
pass
python学习日记(基础数据类型及其方法02)的更多相关文章
- Python学习日记day3:数据类型
1.数据类型int :如1.2.4等, 用于计算 bool: True , False ,用户判断 str: 储存少量数据,进行操作.如:'fdasklfjfladfl','而而噩噩','1234' ...
- Python学习1 基础数据类型
一.字符串 1.去除首尾字符 str_test = 'Hello World!' str_test.split()#将字符串分割为列表str_test. ...
- python学习日记(基础数据类型及其方法01)
数字 int 主要是用于计算的,常用的方法有一种 #既十进制数值用二进制表示时,最少使用的位数i = 3#3的ASCII为:0000 0011,即两位 s = i.bit_length() print ...
- Python 学习日记(第三周)
知识回顾 在上一周的学习里,我学习了一些学习Python的基础知识下面先简短的回顾一些: 1Python的版本和和安装 Python的版本主要有2.x和3.x两个版本这两个版本在语法等方面有一定的区别 ...
- Python入门篇-基础数据类型之整型(int),字符串(str),字节(bytes),列表(list)和切片(slice)
Python入门篇-基础数据类型之整型(int),字符串(str),字节(bytes),列表(list)和切片(slice) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Py ...
- Python学习入门基础教程(learning Python)--5.6 Python读文件操作高级
前文5.2节和5.4节分别就Python下读文件操作做了基础性讲述和提升性介绍,但是仍有些问题,比如在5.4节里涉及到一个多次读文件的问题,实际上我们还没有完全阐述完毕,下面这个图片的问题在哪呢? 问 ...
- Python学习笔记基础篇——总览
Python初识与简介[开篇] Python学习笔记——基础篇[第一周]——变量与赋值.用户交互.条件判断.循环控制.数据类型.文本操作 Python学习笔记——基础篇[第二周]——解释器.字符串.列 ...
- 【python学习笔记】9.魔法方法、属性和迭代器
[python学习笔记]9.魔法方法.属性和迭代器 魔法方法:xx, 收尾各有两个下划线的方法 __init__(self): 构造方法,创建对象时候自动执行,可以为其增加参数, 父类构造方法不会被自 ...
- Python学习日记 --day2
Python学习日记 --day2 1.格式化输出:% s d (%为占位符 s为字符串类型 d为数字类型) name = input('请输入姓名') age = int(input('请输入年龄 ...
随机推荐
- matplotlib 入门之Sample plots in Matplotlib
文章目录 Line Plot One figure, a set of subplots Image 展示图片 展示二元正态分布 A sample image Interpolating images ...
- 项目笔记-SC01
项目启动已有两周,从分析需求到系统设计,文档性工作比较多,只是文档参考比较少,相对的标准就不好界定了. 计划开发时间理论上是按部就班的,没什么变化,可能真正进入开发阶段才会遇到一些问题吧,有些问题就是 ...
- adb通过wifi连接android设备
问题背景 近期的项目测试中,需要将移动设备与厂商机器进行usb连接视频传输(投屏).测试过程中需要定位问题,经常需要查看实时日志,移动设备已经和厂商机器usb连接投屏,无法用usb连接到PC,那么有什 ...
- Python爬虫:爬取人人都是产品经理的数据
爬取内容: 人人都是产品经理首页(www.woshipm.com)左侧[最新文章]下如图样式的文章标题.浏览量和缩略图. 思路: 1. 用BeautifulSoup解析网页 变量名 = Beautif ...
- MySQL中有关NULL的计算
mysql> select NULL=NULL; #判断两个NULL是否相等,结果不是1也不是0 +-----------+ | NULL=NULL | +-----------+ | NULL ...
- css实现三栏自适应布局(两边固定,中间自适应)以及优缺点
方法一:绝对定位(absolute + margin) 原理:给左右两边的元素设置absolute,这样左右两边的元素脱离标准文档流的控制,中间的元素自然会上来,然后给中间的元素设置margin留出左 ...
- SpringMVC+Spring+Mybatis+AngularJS 多规格保存示例代码
insert时拿到最新增加的id值 绑定参数 js 实体类 Service实现类 Controller
- 在Laravel中使用数据库事务以及捕获事务失败后的异常
Description 在Laravel中要想在数据库事务中运行一组操作,则可以在 DB facade 中使用 transaction 方法.如果在事务的闭包内抛出异常,事务将会被自动还原.如果闭包运 ...
- (自用 )npm --save和--save-dev区别
https://blog.csdn.net/playboyanta123/article/details/78349034(原文) 目前大多数基于vue的项目都是用vue-cli 创建的.当创建项目完 ...
- C# Note8: 设计模式全解
前言——资源说明 目前网上设计模式的介绍可谓非常之多(各种编程语言的版本),其中不乏精细之作,本文的目的在于搜集和整理C#或C++的设计模式,毕竟思想还是共通的! 设计模式的分类 创建型模式,共五种: ...