Python小白的发展之路之Python基础(二)
列表、元组操作
字符串操作
字典操作
集合操作
文件操作
字符编码与转码
1.列表、元组操作
(1)列表
列表是可变的(mutable)——可以改变列表的内容,这不同于字符串和元组,字符串和元组都是不可变的;列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储、修改等操作
我们使用列表的方法无非就是:增删改查这4中方法
定义列表:
names=['chen','zi','ang']
列表的切片:用来取多个元素
下标从0开始排序,-1表示最后一个,在取得过程中取前不取后
>>> phones=['Iphone','Xiaomi','Sansumg','Meizu','Huawei']
>>> phones[1:3] #取下标1到4之间的元素(包括1不包括4) "取首不取尾"
['Xiaomi', 'Sansumg', 'Meizu']
>>> phones[2:-1] #取下标2到-1之间的元素,不包括-1
['Sansumg', 'Meizu']
>>> phones[0:3] #phones[:3] 两者一样,0可以省略
['Iphone', 'Xiaomi', 'Sansumg'] 有间隔的取元素:
>>> phones[0::2] #phones[::2] #每隔1个取一个
切片操作
追加操作:这里用到的方法是append来实现追加
>>> phones
['Iphone','Xiaomi','Sansumg','Meizu','Huawei']
>>> phines.append("")
>>> phones
['Iphone','Xiaomi','Sansumg','Meizu','Huawei','Dachang']
追加操作
插入操作:这里用到insert来实现
>>>names=['chen','zi','ang']
>>>names.insert(插入的位置,插入的内容)
例:>>>names.insert(1,'miao') [插入的位置1]
结果:>>>names
['chen','miao','zi','ang']
插入操作
修改操作:
>>>names
['chen','miao','zi'.'ang']
修改miao为damiao
>>>names[2]='damiao'
>>>names
['chen','damiao','zi'.'ang']
修改操作
删除操作:总共有3中删除方法
方法1:python中最常用的删除方法
>>>names=['chen','damiao','zi','ang']
>>>del names[3]
>>>names
['chen','damiao','zi'] 方法2:删除指定的字符
>>>names=['chen','damiao','zi','ang']
>>>names.remove('damiao')
>>>names
['chen','zi','ang'] 方法3:删除列表中最后一个值
>>>names=['chen','damiao','zi','ang']
>>>names.pop()
>>>names
['chen','damiao','zi']
删除操作
合并操作:将多个列表合并成一个列表
>>>names=['chen','zi','ang']
>>>a=['','','','']
>>>names.extend(a) #合并操作
>>>names
['chen','zi','ang','','','','']
合并操作
统计操作:
>>>names=['chen','ai','ang','chen']
>>>names.count('chen')
2
排序;翻转:
排序:
>>>names=['chen','zi','ang','','','']
>>>names.sort() #排序
>>>names.reverse() #翻转
获取下标:
>>>names=['chen','zi','ang','damiao']
>>>names.index('zi') #返回的是找到的第一个值的下标
(2)元祖:元祖是特殊的列表(只读列表),一旦创建不可以修改
只有两个方法:count index
2.字符串操作
此处只概述常用的一些操作
a='Hello'
b='World'
>>>print(a+=b) #连接字符串
'HelloWorld'
>>>print(cmp(a,b)) #比较字符串,相同返回0 不相同返回1
1
>>>print(len(a)) #获取字符串的长度
5
c='I,am,damiao'
>>>print(c.strip(",")) #去除特定符号
Iamdamiao
>>>print(c.split(",")) #分割字符串
>>>print(c.replace(oldstr,newstr,[count]))
3.字典操作
字典:字典是一种键值型数据结构,感觉有点类似mongo数据库
特性:
字典的特性:
- dict是无序的
- key必须是唯一的,so 天生去重
3.1创建字典
字典的创建方法有两种,第一种是使用花括号,第二种是使用内键函数dict
>>>info={}
>>>info={'name':'chenziang','sex':'boy','hobby':'python'}
>>>info=dict()
增加
info['love']='iphone'
>>>info
{'hobby': 'python', 'love': 'iphone', 'sex': 'boy', 'name': 'chenziang'}
修改
>>>info['hobby']='Linux'
>>>info
{'name': 'chenziang', 'sex': 'boy', 'hobby': 'Linux', 'love': 'iphone'}
删除:这里提供了3种删除方法
>>>info
{'name': 'chenziang', 'sex': 'boy', 'hobby': 'Linux', 'love': 'iphone'}
>>>info.pop('sex')
>>>info
{'hobby': 'python', 'love': 'iphone', 'name': 'chenziang'} >>>info
{'name': 'chenziang', 'sex': 'boy', 'hobby': 'Linux', 'love': 'iphone'}
>>>del info['hobby'] #python中最常用的删除方法
>>>info
{'sex': 'boy', 'love': 'iphone', 'name': 'chenziang'} >>>info
{'name': 'chenziang', 'sex': 'boy', 'hobby': 'Linux', 'love': 'iphone'}
>>>info.popitem() #随机删除一个
>>>info
{'sex': 'boy', 'name': 'chenziang', 'love': 'iphone'}
查找
>>>iinfo={'name':'chenziang','sex':'boy','hobby':'python'}
>>>"sex" in info #标准用法
True #key不存在则返回None >>>info.get("hobby") #获取
'python' #key存在返回value
#key不存在则返回None >>>info['hobby'] #key存在则返回value
'python' #key不存在则会报错
循环字典
#方法1
for key in info:
print(key,info[key]) #方法2
for k,v in info.items(): #该操作会吧字典先转换成一个列表,当数据量大是请勿使用
print(k,v)
4.集合操作
集合是无需的,不重复的数据组合,主要作用有两个:
- 去重,将一个列表转换成集合,就好自动去重
- 关系测试,测试数据之间的交集、补集、差集等关系
常用操作:
(1)创建集合:
>>>a = set('chenziang') #创建一个字符集合
>>>a
set(['a', 'c', 'e', 'g', 'i', 'h', 'n', 'z'])
>>>b = set([1,2,3,4,5]) #创建一个数字集合
>>>b
set([1, 2, 3, 4, 5])
(2)集合关系操作:
>>>a
set(['a', 'c', 'e', 'g', 'i', 'h', 'n', 'z'])
>>>b
set([1, 2, 3, 4, 5]) >>>a|b #a和b的并集
set(['a', 1, 'c', 3, 'e', 5, 'g', 'i', 'h', 2, 'n', 4, 'z'])
>>>a&b #a和b的交集
set([])
>>>a-b #求差集(项在a中,但不在b中)
set(['a', 'c', 'e', 'g', 'i', 'h', 'n', 'z'])
>>>a^b #对称差集(项在a或b中,但是不会出现在二者中)
set(['a', 1, 2, 3, 4, 5, 'g', 'i', 'h', 'c', 'n', 'e', 'z'])
(3)集合的增删改查
>>>c=set('abc')
set(['a', 'c', 'b'])
#添加一项
>>>c.add('x')
>>>c
set(['a', 'x', 'c', 'b'])
#添加多项
>>>c.update([1,2,3])
>>>c
set(['a', 1, 'c', 'b', 2, 3, 'x']) #使用remove()可以删除一项:
>>>c.remove('') #此处删除1
>>>c
set(['a', 'c', 'b', 2, 3, 'x']) >>>'a' in c
True
>>>'a' not in c
False
>>>
5.文件操作
在python中对文件操作的流程:
1.打开文件,得到文件句柄并赋值给一个变量
2.通过句柄对文件进行操作
3.关闭文件 (养成操作完文件及时关闭是一个良好的习惯)
文件的基本操作:
f=open('文件名','打开的方式') #打开方式1
with open('文件名','打开的方式') as f #打开方式2
line=f.readline() #读一行
lines=f.read() #读取剩下的内容 f.close() #关闭文件
打开文件的方式(模式):
- r,只读模式(默认);
- w,只写模式。【不可读;不存在则创建;存在则删除其中的内容】;
- a,追加模式。【可读;不存在则创建;存在则只追加内容】;
在'r','w','a'后+的作用:
- r+,可读写文件。【可读;可写;可追加】;
- w+,写读;
- a+,通a;
'U'表示在读取文件时,可以将\r \n \r\n 自动转换成\n(与r或r+模式同时使用)
- rU
- r+U
'b'表示处理二进制文件(如:FTP上传ISO镜像文件,linux可忽略,windows处理二进制文件时需标注)
- rb;
- wb;
- ab;
6.字符集与转码
注意的是:
1.在python2默认编码是ASCII, python3里默认是unicode
2.unicode 分为 utf-32(占4个字节),utf-16(占两个字节),utf-8(占1-4个字节), so utf-16就是现在最常用的unicode版本, 不过在文件里存的还是utf-8,因为utf8省空间
3.在py3中encode,在转码的同时还会把string 变成bytes类型,decode在解码的同时还会把bytes变回string
上图仅适用于python2
#-*-coding:utf-8-*-
__autor__='Chenziang' import sys
print(sys.getdefaultencoding()) msg='喵大王'
msg_bg2312=msg.decode('utf-8').encode('gb2312')
gb2312_to_gbk=msg_gb2312.decode('gb2312').encode('gbk') print(msg)
print(gb2312)
pritn(gbk2312_to_gbk)
Python小白的发展之路之Python基础(二)的更多相关文章
- Python小白的发展之路之Python基础(一)
Python基础部分1: 1.Python简介 2.Python 2 or 3,两者的主要区别 3.Python解释器 4.安装Python 5.第一个Python程序 Hello World 6.P ...
- Python小白的发展之路之Python基础(二)【字符串、列表、集合、文件操作】
列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1.列表.元组操作 (1)列表 列表是可变的(mutable)——可以改变列表的内容,这不同于字符串和元组,字符串和元组都是不 ...
- Python小白的发展之路之Python基础(三)【函数简介】
目录: 1. 函数基本语法及特性 2. 参数与局部变量 3. 返回值 4.嵌套函数 5.递归 6.匿名函数 7.函数式编程介绍 8.高阶函数 9.内置函数 1. 函数基本语法及特性 首先我们明确函数是 ...
- 一个python小白的学习之路
本人是个网管,在佛山工作,现在已经学习了一段时间python了,还是学开基础,但近段时间有一点的突破出来了,找到了一个很好的自学视频,等自己有能力了就想找一个特训班试试.已经看了视频两个星期了,有小小 ...
- 《Python自动化运维之路》 系统基础信息模块(一)
系统性能收集模块Psutil 目录: 系统性能信息模块psutil 系统性能信息模块psutil psutil能够轻松实现获取系统运行的进程和系统利用率包括(CPU,内存,磁盘 和网络)等.主要用于系 ...
- python 小白(无编程基础,无计算机基础)的开发之路 day1
本节内容 Python介绍 发展史 Python 2 or 3? 安装 Hello World程序 变量 用户输入 模块初识 .pyc是个什么鬼? 数据类型初识 数据运算 表达式if ...else语 ...
- Python小白学习之路(四)——第一次练习题
写在前面: 今天下雪了呢!连着两天都没有更新学习记录. 我没有偷懒呢.做了一天的练习题,昨天学的内容还没总结完,太累了就回去睡觉了 连续一周早起,强大的内心也无法支撑我疲惫的身体 今天早起做了整理.加 ...
- Python小白的数学建模课-A3.12 个新冠疫情数模竞赛赛题与点评
新冠疫情深刻和全面地影响着社会和生活,已经成为数学建模竞赛的背景帝. 本文收集了与新冠疫情相关的的数学建模竞赛赛题,供大家参考,欢迎收藏关注. 『Python小白的数学建模课 @ Youcans』带你 ...
- python 全栈开发之路 day1
python 全栈开发之路 day1 本节内容 计算机发展介绍 计算机硬件组成 计算机基本原理 计算机 计算机(computer)俗称电脑,是一种用于高速计算的电子计算机器,可以进行数值计算,又可 ...
随机推荐
- 记录软件工程课程项目开发时遇到的各种小问题(django)
1.python manage.py makemigrations 无效/无法检测出model的变化 在修改了models.py之后,我们想要更新数据库的表,使用了python manage.py m ...
- 我是如何进行Spring MVC文档翻译项目的环境搭建、项目管理及自动化构建工作的
感兴趣的同学可以关注这个翻译项目 . 我的博客原文 和 我的Github 前段时间翻译的Spring MVC官方文档完成了第一稿,相关的文章和仓库可以点击以下链接.这篇文章,主要是总结一下这个翻译项目 ...
- Basic Tutorials of Redis(5) - Sorted Set
The last post is mainly about the unsorted set,in this post I will show you the sorted set playing a ...
- ubuntu Chromium 安装 pepperflashplugin
sudo apt-get update sudo apt-get install chromium-browser sudo apt-get install pepperflashplugin-non ...
- 基于Metronic的Bootstrap开发框架经验总结(13)--页面链接收藏夹功能的实现2(利用Sortable进行拖动排序)
在上篇随笔<基于Metronic的Bootstrap开发框架经验总结(12)--页面链接收藏夹功能的实现>上,我介绍了链接收藏夹功能的实现,以及对收藏记录的排序处理.该篇随笔主要使用功能按 ...
- C# 高效编程笔记2
C# 高效编程笔记2 1.理解GetHashCode()的陷阱 (1)作用:作为基于散列集合定义键的散列值,如:HashSet<T>,Dictionary<K,V>容器等 (2 ...
- Scala Macros - 元编程 Metaprogramming with Def Macros
Scala Macros对scala函数库编程人员来说是一项不可或缺的编程工具,可以通过它来解决一些用普通编程或者类层次编程(type level programming)都无法解决的问题,这是因为S ...
- 交易系统使用storm,在消息高可靠情况下,如何避免消息重复
概要:在使用storm分布式计算框架进行数据处理时,如何保证进入storm的消息的一定会被处理,且不会被重复处理.这个时候仅仅开启storm的ack机制并不能解决上述问题.那么该如何设计出一个好的方案 ...
- 图片的赖加载(lazyLoad)
懒加载的意义(在线demo预览) 尽管很多公司的网页都有一些限制,比如页面的最大的图片大小不得大于50k,也有很多图片优化工具fis3.gulp等等,但是如果图片太多还是会影响页面的加载速度,快则几十 ...
- 一步步实现ABAP后台导入EXCEL到数据库【1】
在SAP的应用当中,导入.导出EXCEL文件的情况是一个常见的需求,有时候用户需要将大量数据定期导入到SAP的数据库中.这种情况下,使用导入程序在前台导入可能要花费不少的时间,如果能安排导入程序为后台 ...