一、数字
数字类型包含整型、浮点型,还包含不太常用的长整型、复数。
二、字符串
定义:在单引号\双引号\三引号内,由一串字符组成
1
<code>msg</code><code>=</code><code>'hello world'</code>
1、切片
2
3
4
<code>print</code><code>(msg[</code><code>1</code><code>:</code><code>8</code><code>]) </code><code>#从下标为1的字符开始取,顾头不顾尾,所以取到第七个字符,所以得到ello wo,空格也是一个字符</code>
<code>print</code><code>(msg[</code><code>1</code><code>:</code><code>8</code><code>:</code><code>2</code><code>]) </code><code>#从下标为1的字符开始取,顾头不顾尾,所以取到第七个字符,步长为2,取一个跳过一个,得到el o</code>
<code>print</code><code>(msg[</code><code>0</code><code>]) </code><code>#取出下标为0的字符、就是第一个字符,得到h</code>
<code>print</code><code>(msg[</code><code>-</code><code>1</code><code>]) </code><code>#取出最后一个字符,得到d</code>
2、长度
<code>print</code><code>(</code><code>len</code><code>(msg)) </code><code>#变量msg的字符串长度,得到11</code>
3、成员运算in和not in,看所取得字符是否在变量定义的字符串里
<code>print</code><code>(</code><code>'llo'</code> <code>in</code> <code>msg) </code><code>#‘llo’在变量定义的字符串里,所以返回True</code>
4、移除空白strip
5
6
7
<code>name</code><code>=</code><code>'**********hello***********'</code>
<code>print</code><code>(name.strip(</code><code>'*'</code><code>)) </code><code>#去掉hello两边的*</code>
<code>print</code><code>(name.lstrip(</code><code>'*'</code><code>)) </code><code>#去掉hello左边的*</code>
<code>print</code><code>(name.rstrip(</code><code>'*'</code><code>)) </code><code>#去掉hello右边的*</code>
<code>#和用户交互常用的情况如下</code>
<code>name</code><code>=</code><code>input</code><code>(</code><code>'user: '</code><code>).strip() </code><code>#对用户输入的字符串去掉两边的空格</code>
<code>print</code><code>(name)</code>
5、切分
<code>info</code><code>=</code><code>'root:x:0:0::/root:/bin/bash'</code>
<code>res</code><code>=</code><code>info.split(</code><code>':'</code><code>) </code><code>#以冒号为分隔符对字符串进行分割,分割后会变成列表的形式</code>
<code>res</code><code>=</code><code>info.split(</code><code>':'</code><code>,</code><code>1</code><code>) </code><code>#以冒号为分隔符对字符串进行分割,并指定分割最大次数为1,方便取出第一个冒号前的字符串</code>
<code>res</code><code>=</code><code>info.rsplit(</code><code>':'</code><code>,</code><code>1</code><code>) </code><code>#从右进行切分,切分一次,结果是按照最后的冒号把字符串切为两部分</code>
6、循环
<code>for</code> <code>i </code><code>in</code> <code>range</code><code>(</code><code>0</code><code>,</code><code>5</code><code>,</code><code>2</code><code>): </code><code>#0到4之间,步长为2,所以得到结果0 2 4</code>
<code> </code><code>print</code><code>(i)</code>
7、lower,upper
<code>print</code><code>(</code><code>'AbcD'</code><code>.lower()) </code><code>#把字符串全部显示成小写,结果是abcd</code>
<code>print</code><code>(</code><code>'aaa'</code><code>.upper()) </code><code>#把字符串全部显示成大写,结果是AAA</code>
8、startswith,endswith
<code>msg</code><code>=</code><code>'tom is boy'</code>
<code>print</code><code>(msg.startswith(</code><code>'tom'</code><code>)) </code><code>#开头的是否是tom,返回True或者False,所以返回True</code>
<code>print</code><code>(msg.startswith(</code><code>'t'</code><code>)) </code><code>#开头的是否是t,所以返回True</code>
<code>print</code><code>(msg.endswith(</code><code>'boy'</code><code>)) </code><code>#末尾的是否是boy,所以返回True</code>
9、join
<code>l</code><code>=</code><code>[</code><code>'root'</code><code>, </code><code>'x'</code><code>, </code><code>'0'</code><code>, </code><code>'0'</code><code>]</code>
<code> </code><code>':'</code><code>.join(l) </code><code>#把列表l里的元素通过冒号合并成一个字符串, 列表l里的元素必须全是字符串,否则报错</code>
10、replace
<code>msg</code><code>=</code><code>'tom say my name is tom'</code>
<code>msg</code><code>=</code><code>msg.replace(</code><code>'alex'</code><code>,</code><code>'leader'</code><code>,</code><code>1</code><code>) </code><code>#用leader替换tom,并且只替换一个</code>
<code>print</code><code>(msg)</code>
11、isdigit判断是否是数字
<code>age</code><code>=</code><code>input</code><code>(</code><code>'>>: '</code><code>).strip()</code>
<code>if</code> <code>age.isdigit(): </code><code>#用户输入的是数字以后,将其转化成整型</code>
<code> </code><code>age</code><code>=</code><code>int</code><code>(age)</code>
<code>else</code><code>:</code>
<code> </code><code>print</code><code>(</code><code>'必须输入数字'</code><code>)</code>
<code>print</code><code>(age,</code><code>type</code><code>(age))</code>
三、列表
1、定义:[]内可以有多个任意类型的值,逗号分隔
<code>name</code><code>=</code><code>[</code><code>'zhao'</code><code>,</code><code>'qian'</code><code>,</code><code>'sun'</code><code>,</code><code>'li'</code><code>]</code>
2.方法append和extend,insert
<code>name.append(</code><code>'ni'</code><code>) </code><code>#列表里添加元素ni</code>
<code>l</code><code>=</code><code>[</code><code>'song'</code><code>,</code><code>'zhang'</code><code>]</code>
<code>name.extend(l) </code><code>#列表里添加多个元素</code>
<code>name.insert(</code><code>1</code><code>,</code><code>'wang'</code><code>) </code><code>#插入元素wang,下标为1</code>
3、方法index
<code>print</code><code>(name.index(</code><code>'zhao'</code><code>)) </code><code>#显示元素zhao对应的下标</code>
4、remove和pop
<code>name.remove(</code><code>'li'</code><code>) </code><code>#删除元素li,但是拿不到取走的元素</code>
<code>name.pop() </code><code>#删除并拿到结果,取走一个值</code>
5、循环
<code>for</code> <code>item </code><code>in</code> <code>name: </code>
<code> </code><code>print</code><code>(item)</code>
6、clear
<code>name.clear() </code><code>#清空列表</code>
7、copy
<code>l</code><code>=</code><code>name.copy() </code><code>#拷贝列表name,将结果作为变量l的值</code>
<code>print</code><code>(l)</code>
8、count
<code>print</code><code>(name.count(</code><code>'li'</code><code>)) </code><code>#统计元素li出现在列表里几次</code>
9、reverse
<code>name.reverse() </code><code>#将列表name元素倒向显示,结果为['li', 'sun', 'qian', 'zhao']</code>
10、sort排序
<code>l</code><code>=</code><code>[</code><code>1</code><code>,</code><code>10</code><code>,</code><code>4</code><code>,</code><code>11</code><code>,</code><code>2</code><code>,]</code>
<code>l.sort() </code><code>#对列表里的元素排序</code>
<code>l.sort(reverse</code><code>=</code><code>True</code><code>) </code><code>#对列表里的元素倒向排序</code>
四、元组
1、与列表类型比,只不过[]换成()
存多个值,对比列表来说,元组不可变,主要是用来读
<code>age</code><code>=</code><code>(</code><code>11</code><code>,</code><code>22</code><code>,</code><code>33</code><code>,</code><code>44</code><code>,</code><code>55</code><code>)</code>
1、index
<code>print</code><code>(age.index(</code><code>11</code><code>)) </code><code>#取出元组里元素11对应得下标</code>
<code>print</code><code>(age.index(</code><code>3333</code><code>)) </code><code># 元素不存在时报错ValueError: tuple.index(x): x not in tuple</code>
<code>print</code><code>(age[</code><code>0</code><code>:</code><code>3</code><code>]) </code><code>#取出元组里元素下标为0,1,2的子元组</code>
2、长度len
<code>print</code><code>(</code><code>len</code><code>(age)) </code><code>#得到元组元素的个数</code>
3、成员运算in和not in
<code>print</code><code>(</code><code>11</code> <code>in</code> <code>age) </code><code>#判断元素11是否在元组里</code>
4、循环
<code>for</code> <code>item </code><code>in</code> <code>age:</code>
5、count
<code>print</code><code>(age.count(</code><code>33</code><code>)) </code><code>#判断元素33出现的次数</code>
6、实现打印商品详细信息,用户输入商品名和购买个数,则将商品名,价格,购买个数加入购物列表,如果输入为空或其他非法输入则要求用户重新输入
8
9
10
11
12
13
14
15
16
17
18
<code>msg_dic</code><code>=</code><code>{</code>
<code>'apple'</code><code>:</code><code>10</code><code>,</code>
<code>'tesla'</code><code>:</code><code>100000</code><code>,</code>
<code>'mac'</code><code>:</code><code>3000</code><code>,</code>
<code>}</code>
<code>goods</code><code>=</code><code>[] </code><code>#购物车,准备一个空列表</code>
<code>while</code> <code>True</code><code>:</code>
<code> </code><code>for</code> <code>k </code><code>in</code> <code>msg_dic:</code>
<code> </code><code>print</code><code>(k,msg_dic[k])</code>
<code> </code><code>choice</code><code>=</code><code>input</code><code>(</code><code>'name: '</code><code>).strip()</code>
<code> </code><code>if</code> <code>len</code><code>(choice)</code><code>=</code><code>=</code><code>0</code> <code>or</code> <code>choice </code><code>not</code> <code>in</code> <code>msg_dic: </code><code>#如果用户输入字符为空或者输入的不是指定的商品,就让用户重新输入</code>
<code> </code><code>continue</code>
<code> </code><code>while</code> <code>True</code><code>:</code>
<code> </code><code>num</code><code>=</code><code>input</code><code>(</code><code>'number: '</code><code>).strip()</code>
<code> </code><code>if</code> <code>num.isdigit():</code>
<code> </code><code>break</code>
<code> </code><code>goods.append((choice,msg_dic[choice],</code><code>int</code><code>(num))) </code><code>#注意括号容易少写</code>
<code> </code><code>print</code><code>(</code><code>'购物车'</code><code>,goods)</code>
五、字典
1、定义:key必须是不可变类型(int,float,str,tuple),value可以是任意类型
<code>info</code><code>=</code><code>{</code><code>'name'</code><code>:</code><code>'egon'</code><code>,</code><code>'age'</code><code>:</code><code>18</code><code>,</code><code>'sex'</code><code>:</code><code>'male'</code><code>}</code>
2、fromkeys
<code>info</code><code>=</code><code>{}.fromkeys([</code><code>'name'</code><code>,</code><code>'age'</code><code>,</code><code>'sex'</code><code>],</code><code>None</code><code>) </code><code>#快速创建字典,前面列表的每个元素会和none组成字典的一个元素</code>
3、修改字典的值
<code>info[</code><code>'age'</code><code>]</code><code>=</code><code>22</code> <code>#指定key,等于一个值</code>
4、长度len
<code>print</code><code>(</code><code>len</code><code>(info)) </code><code>#判断字典的长度,即有几个元素</code>
5、成员运算in和not in
<code>print</code><code>(</code><code>'name'</code> <code>in</code> <code>info)</code>
6、删除pop
<code>print</code><code>(info.pop(</code><code>'name'</code><code>)) </code><code>#取出字典key为name的元素</code>
<code>print</code><code>(info) </code><code># 看到元素为name的键值对已经删掉了</code>
7、popitem和keys、values
<code>print</code><code>(info.popitem()) </code><code>#取出后面的键值对,结果是('sex', 'male')</code>
<code>print</code><code>(info.keys()) </code><code>#取出字典里所有的key,结果是dict_keys(['name', 'age'])</code>
<code>print</code><code>(</code><code>list</code><code>(info.keys())[</code><code>1</code><code>]) </code><code>#取出字典里所有key的组合,转为列表,再根据下标取出对应得key,结果是age</code>
<code>print</code><code>(info.values()) </code><code>#取出字典里所有的value,结果是dict_values(['egon', 18])</code>
<code>print</code><code>(</code><code>list</code><code>(info.values())[</code><code>1</code><code>]) </code><code>#取出字典里所有value的组合,转为列表,再根据下标取出对应得value,结果是18</code>
<code>print</code><code>(</code><code>list</code><code>(info.items())[</code><code>1</code><code>]) </code><code>#取出键值对,最后的结果是('age', 18)</code>
8、循环
<code>for</code> <code>k </code><code>in</code> <code>info: </code><code>#循环key,最后通过key取到values</code>
<code> </code><code>print</code><code>(k,info[k])</code>
9、有如下值集合 [11,22,33,44,55,66,77,88,99,90],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中
<code>nums</code><code>=</code><code>[</code><code>11</code><code>,</code><code>22</code><code>,</code><code>33</code><code>,</code><code>44</code><code>,</code><code>55</code><code>,</code><code>66</code><code>,</code><code>77</code><code>,</code><code>88</code><code>,</code><code>99</code><code>,</code><code>90</code><code>]</code>
<code>d</code><code>=</code><code>{</code><code>'k1'</code><code>:[],</code><code>'k2'</code><code>:[]}</code>
<code>for</code> <code>num </code><code>in</code> <code>nums:</code>
<code> </code><code>if</code> <code>num > </code><code>66</code><code>:</code>
<code> </code><code>d[</code><code>'k1'</code><code>].append(num)</code>
<code> </code><code>if</code> <code>num < </code><code>66</code><code>:</code>
<code> </code><code>d[</code><code>'k2'</code><code>].append(num)</code>
<code>print</code><code>(d)</code>
六、集合
1、定义和原则
集合:可以包含多个元素,用逗号分割
集合的元素遵循三个原则:
1:每个元素必须是不可变类型(可hash,可作为字典的key)
2: 没有重复的元素
3:无序
<code>pythons</code><code>=</code><code>{</code><code>'alex'</code><code>,</code><code>'egon'</code><code>,</code><code>'yuanhao'</code><code>,</code><code>'tom'</code><code>,</code><code>'jim'</code><code>}</code>
<code>linuxs</code><code>=</code><code>{</code><code>'tom'</code><code>,</code><code>'sam'</code><code>}</code>
<code>print</code><code>(</code><code>len</code><code>(pythons)) </code><code>#长度即是集合 python的元素个数,所以为5</code>
<code>print</code><code>(</code><code>'alex'</code> <code>in</code> <code>pythons) </code><code>#判断alex是否在python集合中,所以结果为True</code>
4、交集
<code>print</code><code>(pythons & linuxs) </code><code>#同时在两个集合中的元素,所以结果是{'tom'}</code>
5、合集
<code>print</code><code>(pythons | linuxs) </code><code>#两个集合的所有元素,重复的显示一次,所以结果是{'tom', 'jim', 'egon', 'sam', 'alex', 'yuanhao'}</code>
6、差集
<code>print</code><code>(pythons </code><code>-</code> <code>linuxs) </code><code>#python中的元素减去linuxs中的元素,剩下的结果是{'jim', 'yuanhao', 'egon', 'alex'}</code>
7、对称差集
<code>print</code><code>(pythons ^ linuxs) </code><code>#没有同时在两个集合中的元素,即所有元素减去交集的结果是{'egon', 'sam', 'jim', 'alex', 'yuanhao'}</code>
8、父集>,>=
<code>a</code><code>=</code><code>{</code><code>1</code><code>,</code><code>2</code><code>,</code><code>3</code><code>}</code>
<code>b</code><code>=</code><code>{</code><code>1</code><code>,</code><code>2</code><code>}</code>
<code>print</code><code>(a></code><code>=</code><code>b) </code><code>#判断集合a是否包含集合b的元素,所以结果为True</code>
9、子集<,<=
<code>print</code><code>(a<</code><code>=</code><code>b) </code><code>#判断集合a是否被集合b包含,所以结果为False</code>
10、去重
<code>l</code><code>=</code><code>[</code><code>'a'</code><code>,</code><code>'b'</code><code>,</code><code>1</code><code>,</code><code>'a'</code><code>,</code><code>'a'</code><code>]</code>
<code>print</code><code>(</code><code>set</code><code>(l)) </code><code>#转为集合的形式,元素一样的显示一次,所以结果是{1, 'a', 'b'},结果没有按照以前的顺序</code>
11、循环
<code>for</code> <code>i </code><code>in</code> <code>l:</code>
<code> </code><code>print</code><code>(i)</code>
12、用之前的方法去重并保持顺序
<code>new</code><code>=</code><code>[]</code>
<code> </code><code>if</code> <code>i </code><code>not</code> <code>in</code> <code>new:</code>
<code> </code><code>new.append(i)</code>
<code>print</code><code>(new)</code>
13、借助集合实现去重并保持顺序
<code>s</code><code>=</code><code>set</code><code>()</code>
<code> </code><code>if</code> <code>i </code><code>not</code> <code>in</code> <code>s:</code>
<code> </code><code>s.add(i)</code>
14、集合的其他用法
<code>s1</code><code>=</code><code>{</code><code>1</code><code>,</code><code>2</code><code>,</code><code>3</code><code>}</code>
<code>s2</code><code>=</code><code>{</code><code>1</code><code>,</code><code>2</code><code>}</code>
<code>print</code><code>(s1</code><code>-</code><code>s2) </code><code>#取得s1和s2的交集,不改变原来的集合的元素</code>
<code>print</code><code>(s1.difference(s2)) </code><code>#取s1和s2不同的地方,不改变原来的集合的元素</code>
<code>s1.difference_update(s2) </code><code>#对s1赋值,改变了s1的元素,结果s1就成了{3}</code>
<code>print</code><code>(s2.pop()) </code><code>#随机从集合s2中取走一个元素</code>
<code>s2.add(</code><code>'b'</code><code>) </code><code>#给集合s2增加一个元素b</code>
<code>s2.discard(</code><code>'b'</code><code>) </code><code>#从集合中删除元素b,删除的元素不存在不会报错</code>
<code>s2.remove(</code><code>'b'</code><code>) </code><code>#从集合中删除元素b,删除的元素不存在则报错</code>
<code>s1</code><code>=</code><code>{</code><code>1</code><code>,</code><code>2</code><code>,</code><code>3</code><code>,</code><code>4</code><code>,</code><code>5</code><code>,</code><code>'a'</code><code>}</code>
<code>s2</code><code>=</code><code>{</code><code>'b'</code><code>,</code><code>'c'</code><code>,}</code>
<code>print</code><code>(s1.isdisjoint(s2)) </code><code>#两个集合没有共同部分时,返回值为True</code>
<code>s2.update({</code><code>6</code><code>,</code><code>7</code><code>}) </code><code>#集合s2增加元素6和7,一次添加多个元素,所以结果为{'c', 'b', 6, 7}</code>
<code>print</code><code>(s2)</code>
七、字符编码
1、存取文件不乱码的法则:用什么编码存的,就要用什么编码读
2、encode和decode
unicode-----encode----->gbk
gbk-------->decode----->unicode
3、解释器的字符编码
python3解释器默认使用的字符编码是utf-8
python2解释器默认使用的字符编码是ascii
4、
python2的str就是python3的bytes
python2的unicode就是python3的str
八、文件处理
1、打开文件读,python进程要访问文件,会向操作系统提交读请求,操作系统取到的数据交给进程,进程开辟内存空间存放数据,所以最后要关闭文件,回收操作系统的资源
<code>f</code><code>=</code><code>open</code><code>(r</code><code>'C:\Users\song\Desktop\a.txt'</code><code>,</code><code>'r'</code><code>,encoding</code><code>=</code><code>'utf-8'</code><code>) </code><code>#最前面的r表示保持字符的本意,不然'\'就需要转意</code>
<code>data</code><code>=</code><code>f.read()</code>
<code>print</code><code>(data)</code>
<code>f.close() </code><code>#文件关闭,回收操作系统的资源</code>
<code>print</code><code>(f.readline(),end</code><code>=</code><code>'') </code><code>#逐行读,文件大时,不能一次读所有数据,就需要逐行读了</code>
2、为避免忘记关闭操作系统打开的文件,可以直接让程序关闭
<code><span style</code><code>=</code><code>"font-size: 14px;"</code><code>>with </code><code>open</code><code>(</code><code>'a.txt'</code><code>,</code><code>'r'</code><code>,encoding</code><code>=</code><code>'utf-8'</code><code>) as f: <</code><code>/</code><code>span><br></code>
3、写操作,每次执行都会清掉原来的数据,然后写入新的内容
<code>f</code><code>=</code><code>open</code><code>(r</code><code>'C:\Users\song\Desktop\a.txt'</code><code>,</code><code>'w'</code><code>,encoding</code><code>=</code><code>'utf-8'</code><code>)</code>
<code>f.write(</code><code>'11111\n'</code><code>)</code>
<code>f.write(</code><code>'1111\n2222\n3333\n'</code><code>) </code><code>#写入多行时,行尾用'\n'标识</code>
<code>f.close()</code>
本文转自 宋鹏超 51CTO博客,原文链接:http://blog.51cto.com/qidian510/2049727,如需转载请自行联系原作者