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