天天看点

python数据类型及常用方法

一、数字

数字类型包含整型、浮点型,还包含不太常用的长整型、复数。

二、字符串

定义:在单引号\双引号\三引号内,由一串字符组成

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>'&gt;&gt;: '</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 &gt; </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 &lt; </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 &amp; 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、父集&gt;,&gt;=

<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&gt;</code><code>=</code><code>b)               </code><code>#判断集合a是否包含集合b的元素,所以结果为True</code>

9、子集&lt;,&lt;=

<code>print</code><code>(a&lt;</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-----&gt;gbk

    gbk--------&gt;decode-----&gt;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>&lt;span style</code><code>=</code><code>"font-size: 14px;"</code><code>&gt;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: &lt;</code><code>/</code><code>span&gt;&lt;br&gt;</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,如需转载请自行联系原作者