基础数据类型
2018-01-15 16:24:57 32 举报
AI智能生成
Python基础数据类型
作者其他创作
大纲/内容
基础数据类型初始
整数型 int
数字主要是用于计算,适用于各种数学运算
操作类型
bit_length()
是计算数字转换成二进制后的最少位数,相当于计算二进制数的长度
字符串 str
索引
索引即下标,就是字符串组成的元素从第一个开始,初始索引为0以此类推。(用中括号[]来表示,负号代表倒着数,倒着数的时候从1开始)
切片
通过索引(索引:索引:步长)截取字符串的一段,形成新的字符串(原则就是顾头不顾腚)。(用中括号[]来表示)
字符串的其他操作
字符串首字母大写
字符串.capitalize()
字符串全大写
字符串.upper()
字符串全小写
字符串.lower()
大小写翻转
字符串.swapcase()
每个隔开(空格,特殊字符或者数字)的单词首字母大写
字符串.title()
内同居中,总长度,空白处填充
字符串.center(30,'+')
默认将一个tab键变成8个空格,如果tab前面的字符长度不足8个,则补全8个, # 如果tab键前面的字符长度超过8个不足16个则补全16个,以此类推每次补全8个
字符串.expandtabs()
计算字符串长度
len(字符串)
判断是否以...开头,返回值是bool值
字符串.startswith('gu')
判断是否以...结尾,返回值是bool值
字符串.endswith('an ')
寻找字符串中的元素找索引,找到输出索引数,找不到返回-1 从左向右,找到第一个就停止了
字符串.find('i')
寻找字符串中的元素找索引,找到输出索引数,找不到报错 从左向右,找到第一个就停止了
字符串.index('i')
默认删除前后空格 ()里有就可以删除什么 rstrip 只删除右边的 lstrip只删除左边的
字符串.strip()
字符串.rstrip()
字符串.lstrip()
计数器,计算某元素在字符串出现的次数
字符串.count('')
以什么分割,最终形成一个列表此列表不含有这个分割的元素
字符串.split('')
替换,默认的是替换全部字符
字符串.replace(老字符,新字符,替换几个老字符)
格式化输出
format
s = '我叫{0},今年{1},爱好{2},再说一下我叫{0}'.format(name,36,'girl')
s = '我叫{},今年{},爱好{},再说一下我叫{}'.format('太白',36,'girl','太白')
s = '我叫{name},今年{age},爱好{hobby},再说一下我叫{name}'.format(age=18,name=name,hobby='girl')
判断字符串是否由字母或数字组成
字符串.isalnum()
判断字符串是否只由字母组成
字符串.isalpha()
判断字符串是否只由数字组成
字符串.isdigit()
判断字符串是否全是大写
字符串.isupper()
判断字符串是否全是小写
字符串.islower()
判断是否是空格
字符串.isspace()
判断是否所有单词都是首字母大写,像标题
字符串.istitle()
布尔值 bool
就两种True和False
列表 list
以[]括起来,每个元素以逗号隔开
列表相比于字符串,不仅可以储存不同的数据类型,而且可以储存大量数据,32位python的限制是 536870912 个元素,64位python的限制是 1152921504606846975 个元素。而且列表是有序的,有索引值,可切片,方便取值。
列表的基本操作
列表的增
列表.append('需要添加的元素')
把元素添加到列表的后面
列表.insert(索引数,'需要添加的元素)
按照索引添加元素,这里的索引是指元素添加到列表后所在的索引
列表.extend('可迭代对象')
迭代增加,依次添加到列表的后面
列表的删
列表.pop(索引数)
按照索引数删除元素
列表.remove('元素')
按照元素删除
del 列表
删除整个列表,会报错
del 列表[索引数]
按索引删除,也可以切片删除
列表.clear()
清空列表
列表的改
按索引改
列表[索引数] = 新元素
切片改
列表[索引数:索引数] = 新元素
列表的其他操作
计算列表的长度
len(列表)
计数器,计算某元素在列表出现的次数
列表.count('元素')
列表中,按元素找索引,找不到会报错
列表.index('元素')
列表中没有 find 操作。
列表的排序
正向排序
列表.sort()
反向排序
列表.sort(reverse=True)
反转
列表.reverse()
元组 tu
用 () 表示,其实是一种只读列表,可循环查询,切片 切片后输出的还是元祖
儿子不能改,孙子可能可以改
儿子不能改,孙子可能可以改
字典 dic
字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据。python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可哈希的。可哈希表示key必须是不可变类型,如:数字、字符串、元组。
字典(dictionary)是除列表意外python之中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
字典的增
字典['键'] = 值
原字典中没有时直接添加到原字典的后面;如果增加的内容在原来的字典中有这对键值,那么会对原来的键值进行覆盖修改。
字典.setdefault('键','值')
在字典中添加键值对,如果只有键那对应的值是none;如果原字典中存在设置的键值对,则他不会更改或者覆盖。
字典的删
字典.pop("键",'无key默认返回值')
pop根据key删除键值对,并返回对应的值,如果没有key则返回默认返回值,可以有返回值
del 字典
删除整个字典,会报错
del 字典[键]
删除键值对
字典.popitem()
随机删除字典中的某个键值对,将删除的键值对以元祖的形式返回
字典.clear()
清空整个字典
字典的改
字典[键] = 值
直接修改键值对
dic2.update(dic)
将dic所有的键值对覆盖添加(相同的覆盖,没有的添加)到dic2中
字典的查
字典.keys()
直接查键
字典.values()
直接查值
字典.items()
直接查键值对
字典[键]
直接查值
字典.get(键,'可以设置没有此键时的返回值')
查值
for循环
for i in dic :
查键
for i in dic.keys() :
查键
for i in dic.values() :
查值
for k,v in dic.items() :
查键、查值
集合 set
集合是无序的,不重复的数据集合,它里面的元素是可哈希的(不可变类型),但是集合本身是不可哈希(所以集合做不了字典的键)的
去重,把一个列表变成集合,就自动去重了
关系测试,测试两组数据之前的交集、差集、并集等关系
集合的增删改查
集合的增
集合.add('元素')
集合.update('元素') --迭代增加
集合的删除
集合.pop() - -随机删除,有返回值
集合.remove(元素) -- 按元素删除
集合.clear() -- 清空集合
del 集合 --- 删除集合,会报错
集合不能改
集合的查
只能用for循环查询
集合的其他操作
交集
set1 & set2 或者是 set1.intersection(set2)
并集
set1 | set2 或者是 set2.union(set1)
差集
set1 - set2 或者是 set1.difference(set2)
反交集
set1 ^ set2 或者是 set1.symmetric_difference(set2)
子集
set1 < set2
set1.issubset(set2)
这两个相同,都是说明set1是set2子集
超集
set2 > set1
set2.issuperset(set1)
这两个相同,都是说明set2是set1超集
几种数据类型的相互转换
int ---- str
str(int)
所有的整数型数字都可以转换成字符串类型的数字
str ----- int
int(str)
字符串中只有数字才能转换成整数类型
int ----- bool
bool(int)
非0输出的bool值都是True,只有 0 输出的是False
bool ----- int
int(bool)
bool 值True转换成整数型的只有1, bool值False转换成整数型的只有0
str ---- bool
bool(str)
只要输入的字符串非空,输出的bool就是True,空字符串输出的bool值是False,空格也算是有内容,不算空
str ---->list
字符串.split('')
以什么分割,最终形成一个列表此列表不含有这个分割的元素
list -----> str
字符串 = ' '.join(列表)
几种循环判断语句
if
while
while else
if i in range() :
range 后面加的是数字范围,可以是切片
Python2系列与Python3系列有哪些不同之处
从宏观上考虑,Python2重复代码太多,错误率高,不够规范。Python崇尚的是语言简洁、优美、清晰。Python3更加规范,重复代码少
Python2默认的编码是ASCII码,无法正确识别中文,而Python3默认的代码是utf-8,能够正确识别中文
Python2中print打印时后面可以不用加(),但是Python3中print打印时必须加上(),否则会报错
Python2中有range和xrange(生成器),但是Python3中只有range
Python3中的input,在Python2中是raw_input
编码知识
ASCII码
一个字符用8位来表示,共1个字节
unicode码
相对于ASCII码是创新。有16位和32位的两种,现在大部分用的是32位来表示一个字符,共4个字节
utf-8码
是unicode码的升级版本,最少用8位来表示一个字符,英文时是8位来表示的,共1个字节,中文是用24位来表示的,共3个字节,欧洲其他国家文字是用16未来表示的,共2个字节。还有utf-16、utf-32
gbk码
中国人自己发明的。表示英文时是用8位来表示的,共1个字节,中文是用16位来表示的,共2个字节
注意
各个编码之间的二进制是不能互相识别的,会产生乱码
文件的储存、传输,不能是unicode(只能是utf-8、utf-16、gbk、gb2312,ascii等)
Python3中 str 在内存中是用unicode编码
encode 编码,如何将str --> bytes, ()
bytes的类型 = str的类型.encode('编码方式)
计算机基础
变量
就是将一些运算的中间结果暂存到内存中,以便后续代码调用
规范
必须由数字、字母和下划线任意组合,且不能数字开头
不能是Python中的关键字
变量具有可描述性
约定俗成是不要用中文和拼音
约定俗成是不要太长
常量
Python中没有规定的常量,但程序员习惯性把变量名全部大写当作是常量
注释
方便自己,方便他人更好的理解代码
单行注释:#+被注释行
多行注释:'''被注释内容'''或者是"""被注释内容"""
小知识点
用户交互 input(' ')
等待用户输入
将输入的内容赋值给了input前面的变量
input括号里面的变量类型都是字符串
数据类型划分
可变数据类型
列表(list)、字典(dict)、集合(set)。可变数据类型也称为不可哈希。
不可变数据类型
元组(tupe)、布尔值(bool)、整数型(int)、字符串(str)。不可变数据类型也称为可哈希。
小知识点
“=”、“==”与“is”的区别
“=” :赋值 把后面的值赋给前面
“==” :比较前后的值是否相等
“is” :比较的是前后的变量内存地址
id : 显示的是内存地址
小数据池概念
在一定范围内当多个变量被赋值的是一个相同的数值时,其占用的内存地址是一样的
int
范围是-5------- 256
str
没有什么具体准确的标准,暂时只发现两个规律
不能含有特殊字符
s*20 还是同一个地址,s*21以后都是两个地址
list 列表、dict 字典、tuple 元组、set 集合都没有小数据池概念
enumerate
枚举,对于一个可迭代的(iterable)/可遍历的对象(如列表、字符串),enumerate将其组成一个索引序列,利用它可以同时获得索引和值。
深浅copy
对于赋值运算来说,值相同,内存地址也相同,改变其中一个,另一个也会改变。
l2 = l1.copy() #浅copy
对于浅copy来说,第一层创建的是新的内存地址,而从第二层开始,指向的都是同一个内存地址,所以,对于第二层以及更深的层数来说,保持一致性。
所以对于copy来说,改变其中一个的第一层,另一个变量是不会变的,但是从二层开始会同时改变。
l2 = copy.deepcopy(l1)
#深copy
对于深copy来说,两个是完全独立的,改变任意一个的任何元素(无论多少层),另一个绝对不改变。
文件操作
f=open(...)是由操作系统打开文件,那么如果我们没有为open指定编码,那么打开文件的默认编码很明显是操作系统说了算了,操作系统会用自己的默认编码去打开文件,
在windows下是gbk,在linux下是utf-8。
f = open('文件路径和文件名',mode='r/w/a/r+/w+/a+/rb/wb/ab/r+b/w+b/a+b',encoding='编码方式')
带有'b'的是bytes类型(非文字文件,还有就是上传和下载)
读文件的几种方法
read方法 content = f.read()
读一部分内容:read(n),指定读n个单位 f.read(5)
按照行读,每次执行readline就会往下读一行 content2 = f.readline()
readlines,返回一个列表,将文件中的每一行作为列表中的每一项返回一个列表 f.readlines()
for循环 最常用的
只写:w
先将源文件的内容全部清除,在写
没有此文件,就会创建文件
带+号的增加有附带功能,比如r+代表在只读的情况下增加了写的功能,代表先读后写,其余的情况类似。
f.seek(3) # 按照字节定光标的位置 f.seek(0) 光标移动到最开始的地方 f.seek(0,2) 光标移动到 最末尾的地方
f.tell() #告诉你光标的位置
f.readable() # 是否可读
line = f.readline() # 一行一行的读
line = f.readlines() # 每一行当成列表中的一个元素,添加到list中
f.truncate(4)
截取一段文件
截取一段文件
import os
os.remove('小护士班主任') #删除文件
os.rename('小护士班主任.bak','小护士班主任') #重命名文件
os.remove('小护士班主任') #删除文件
os.rename('小护士班主任.bak','小护士班主任') #重命名文件
0 条评论
下一页