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)的更多相关文章

  1. Python学习日记day3:数据类型

    1.数据类型int :如1.2.4等, 用于计算 bool: True , False ,用户判断 str: 储存少量数据,进行操作.如:'fdasklfjfladfl','而而噩噩','1234' ...

  2. Python学习1 基础数据类型

    一.字符串                         1.去除首尾字符 str_test = 'Hello World!' str_test.split()#将字符串分割为列表str_test. ...

  3. python学习日记(基础数据类型及其方法01)

    数字 int 主要是用于计算的,常用的方法有一种 #既十进制数值用二进制表示时,最少使用的位数i = 3#3的ASCII为:0000 0011,即两位 s = i.bit_length() print ...

  4. Python 学习日记(第三周)

    知识回顾 在上一周的学习里,我学习了一些学习Python的基础知识下面先简短的回顾一些: 1Python的版本和和安装 Python的版本主要有2.x和3.x两个版本这两个版本在语法等方面有一定的区别 ...

  5. Python入门篇-基础数据类型之整型(int),字符串(str),字节(bytes),列表(list)和切片(slice)

    Python入门篇-基础数据类型之整型(int),字符串(str),字节(bytes),列表(list)和切片(slice) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Py ...

  6. Python学习入门基础教程(learning Python)--5.6 Python读文件操作高级

    前文5.2节和5.4节分别就Python下读文件操作做了基础性讲述和提升性介绍,但是仍有些问题,比如在5.4节里涉及到一个多次读文件的问题,实际上我们还没有完全阐述完毕,下面这个图片的问题在哪呢? 问 ...

  7. Python学习笔记基础篇——总览

    Python初识与简介[开篇] Python学习笔记——基础篇[第一周]——变量与赋值.用户交互.条件判断.循环控制.数据类型.文本操作 Python学习笔记——基础篇[第二周]——解释器.字符串.列 ...

  8. 【python学习笔记】9.魔法方法、属性和迭代器

    [python学习笔记]9.魔法方法.属性和迭代器 魔法方法:xx, 收尾各有两个下划线的方法 __init__(self): 构造方法,创建对象时候自动执行,可以为其增加参数, 父类构造方法不会被自 ...

  9. Python学习日记 --day2

    Python学习日记 --day2 1.格式化输出:% s d  (%为占位符 s为字符串类型 d为数字类型) name = input('请输入姓名') age = int(input('请输入年龄 ...

随机推荐

  1. ORACLE not available如何解决

    最近小弟在用sqlplus的是侯连接scott用户总是出现ORACLE not available于是在网上查看别人博客发现起始并没有别人所说的那么复杂 于是现在来发表一下自己的解决方案: 刚开始登入 ...

  2. 【问题解决方案】本地代码文件上传到GitHub里中文乱码问题

    刚刚学完Git并试着上传了我的化石Java代码到远程库,表面一切和谐,然而.. 真让人大惊失色.. step1-检查浏览器是否是utf-8(谷歌默认是) step2-在本地编辑器设置 (按理说,not ...

  3. Linux reboot与init 6区别

    Reboot与init 6的区别 - flyingcloud_2008的专栏 - CSDN博客https://blog.csdn.net/flyingcloud_2008/article/detail ...

  4. Oracle条件判断if...elsif

  5. oss上传和下载的笔记

    <<<<<<<<<对oss操作,上传文件>>>>>>>>>>>>>& ...

  6. 用Canvas实现一些简单的图片滤镜

    1.灰度滤镜 对于灰度滤镜的实现一般有三种算法 1) 最大值法:即新的颜色值R=G=B=Max(R,G,B),通过这种方法处理后的图片看起来亮度值偏高. 2) 平均值法:即新的颜色值R=G=B=(R+ ...

  7. Ansible入门与实践

    一.ansible介绍 Ansible是一个简单的自动化运维管理工具,基于Python语言实现,由Paramiko和PyYAML两个关键模块构建,可用于自动化部署应用.配置.编排task(持续交付.无 ...

  8. python数据结构与算法第八天【冒泡排序】

    1.排序算法的稳定性 稳定排序算法会让原本有相同键值的记录维持相对次序 例如:对以下元组按照元组的第一个元素升序排列,元组如下: (4,1) (3,1) (3,7) (5,6) 若要满足条件,则可能的 ...

  9. java 环境变量配置 详解!

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. LoadRunner Vuser测试脚本添加前置条件举例

    调用接口前需要先获取登陆token,放入消息头中. /* * LoadRunner Java script. (Build: 3020) * * Script Description: 接口性能测试脚 ...