个人公众号:yk 坤帝
后台回复 基础学习系列 获取完整源代码

1. 序列概述、常用的序列操作

在Python中,最常用且最基础的数据结构是序列,英文为sequence。序列中的每个元素都设有对应的编号,并且使用这些标号来查找这些元素,因此也通常称编号为这些元素的位置或索引。另外一点非常重要的是,序列的索引从0开始,即第一个元素的索引为0,第二个元素的索引为1,依此类推。

Python中有多种序列,但最常见的是列表和元组两类,他们除了最基本的操作相同外,也会有一定的区别:列表中的元素是可以修改的,而元组不可以修改。

适用于所有序列的操作包括索引、 切片、 相加、 相乘和成员资格检查等等,下面会通过举出一些例子来对这些内容进行详细地讲解。

1)索引
使用索引来查找序列中的元素,索引的描述方式为‘[]’。方框中的元素表示索引的元素位置,它可以取正数,也可以取负数。当使用负数-n时,表示从右(即从最后一个元素)开始往左数,第n个元素的查找。

【例 3-1】

In[1]:   number_list = [0,1,2,3,4,5,6,7,8,9]
In[2]:  number_list[3]
Out[2]: 3
In[3]:  number_list[-1]
Out[3]: 9

2)切片

索引通常是用来访问单个元素,而当想要访问多个元素时,通常采用切片(slicing)的方式。使用方括号截取特定范围内的元素,这种操作就是切片。切片本质上是被冒号间隔的两个索引,用来截取从第一个索引下标到第二个索引下标之间的元素。其中第一个索引指定的元素包含在切片内,但第二个索引指定的元素不包含在切片内。

【例 3-2】

In[4]:   number_list = [0,1,2,3,4,5,6,7,8,9]
In[5]:  number_list[3:7]
Out[5]: [3, 4, 5, 6]

同样的,当要从列表末尾开始访问元素时,可以使用负数索引。

【例 3-3】

In[6]:   number_list[-3:-1]
Out[6]: [7, 8]

省略第一个索引时表示切片开始于序列开头,省略第二个索引时表示切片结束于序列末尾,而当两个索引都省略时,则选取整个序列。

【例 3-4】

In[7]:   number_list[-5:]
Out[7]: [5, 6, 7, 8, 9]
In[8]:  number_list[:5]
Out[8]: [0, 1, 2, 3, 4]

除此之外,在索引1和索引2之间可以设置步长来指定访问时跳跃的幅度。步长为正表示从前向后访问,步长为负表示从后向前访问。
【例 3-5】

In[9]:   number_list[1:7:2]
Out[9]: [1, 3, 5]
In[10]: number_list[8:2:-2]
Out[10]:    [8, 6, 4]

3)序列相加
可以使用加法运算符‘+’来拼接序列。
【例 3-6】

In[11]:  list1=[1,2,3]
list2=[4,5,6]
In[12]: list1 + list2
Out[12]:    [1, 2, 3, 4, 5, 6]

4)乘法
在序列中,乘法用‘*’表示,当序列与数x相乘时,将重复这个序列x次来创建一个新序列。
【例 3-7】

In[13]:  [1,2] * 8
Out[13]:    [1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2]

5)成员资格检查
通过使用in运算符来检查特定的值是否包含在序列中。in用来检查满足某条件的元素是否存在,如果存在,返回True;不存在,则返回False。
【例 3-8】

In[14]:  name_list = ['Tom','Jerry','Mickey','Mike']
In[15]: 'Tom' in name_list
Out[15]:    True
In[16]: 'Marry' in name_list
Out[16]:    False

2. 列表概述、常用的列表操作

列表是序列的一种,我们可以对列表执行所有的序列操作,但是不同之处在于列表是可以修改的,因此接下来会介绍一些修改列表的方法:给元素赋值、删除元素、给切片赋值以及使用列表的方法。

1)列表的修改操作
(1)给元素赋值:
给元素赋值之前,需要使用索引法找到特定位置的元素,然后使用赋值号‘=’给元素赋值。但需要注意的是,不能对超出列表长度范围的元素进行赋值。
【例 3-9】

In[17]:  lst = [1,10,20,30,40]
In[18]: lst[3]=35
In[19]: lst
Out[19]:    [1, 10, 20, 35, 40]
In[20]:  lst[5]=50
Out[20]:    IndexError: list assignment index out of range

**(2)删除元素:**使用下标索引并结合del语句来删除元素。
【例 3-10】

In[21]:  lst = [1,10,20,30,40]
In[22]: del lst[3]
In[23]: lst
Out[23]:    [1, 10, 20, 40]

**(3)使用切片可以同时对多个元素进行赋值,**甚至可以实现序列的长度改变。不仅如此,使用切片赋值还可以在不替换原有元素的情况下更新元素。
【例 3-11】

In[24]:  number_list = [1,2,3,4,5,6]
In[25]: number_list[2:]=[20,30,40]
In[26]: number_list
Out[26]:    [1, 2, 20, 30, 40]
In[27]: number_list[1:1]=[5,10,15]
In[28]: number_list
Out[28]:    [1, 5, 10, 15, 2, 20, 30, 40]
In[29]: number_list[1:4] = []
In[30]: number_list
Out[30] [1, 2, 20, 30, 40]

2)列表方法

首先,我们要了解什么是方法,所谓方法(method)通常会加上对象(object)和句点来调用:object.method(arguments),方法用来实现某些功能。列表中包含一些常用的方法,可以用来查看或修改内容,下面则给出一些常用的例子来说明。

(1)append方法:使用append()函数,将某一个对象附加到列表的末尾。

【例 3-12】

In[31]:  number_list.append(50)
In[32]: number_list
Out[32]:    [1, 2, 20, 30, 40, 50]

(2)clear方法:使用clear()函数来清空列表中的所有内容。

【例 3-13】

In[33]:  number_list.clear()
In[34]: number_list
Out[34]:    []

(3)copy方法:复制列表。
【例 3-14】

In[35]:  number_list = [1,2,3,4,5,6,7]
In[36]: nl = number_list.copy()
In[37]: number_list[3] = 40
In[38]: number_list
Out[38]:    [1, 2, 3, 40, 5, 6, 7]
In[39]: nl
Out[39]:    [1, 2, 3, 4, 5, 6, 7]

(4)insert方法:将一个对象插入到列表中。
【例 3-15】
In[40]: number_list.insert(2,7)

In[41]:  number_list
Out[41]:    [1, 2, 7, 3, 40, 5, 6, 7]

(5)remove方法:用于删除第一个为指定值的元素。
【例 3-16】

In[42]:  sentence = ['how','do','you','do']
In[43]: sentence.remove('do')
In[44]: sentence
Out[44]:    ['how', 'you', 'do']

(6)count方法:统计某个元素在列表中出现的次数。
【例 3-17】

In[45]:  ['to', 'be', 'or', 'not', 'to', 'be'].count('to')
Out[45]:    2

(7)extend方法:在列表末尾一次性追加另一个序列中的多个值。
【例 3-18】

In[46]:  a1 = ['a','b','c']
b1 = ['d','e','f']
In[47]: a1.extend(b1)
In[48]: a1
Out[48]:    ['a', 'b', 'c', 'd', 'e', 'f']

(8)index方法:在列表中查找指定值第一次出现的索引。
【例 3-19】

In[49]:  sentence = ['how','do','you','do']
In[50]: sentence.index('do')
Out[50]:    1
In[51]: sentence.index('who')
Out[51]:    ValueError: 'who' is not in list

(9)reverse方法:对列表元素倒序排列。
【例 3-20】

In[52]:  name = ['M','i','c','k','e','y']
In[53]: name.reverse()
In[54]: name
Out[54]:    ['y', 'e', 'k', 'c', 'i', 'M']

3. 特殊的列表–元组

元组与列表一样,也是序列一种,而区别就在元组是不能修改的。创建元组方法很简单,只要将一些值用逗号分隔,就能自动创建。
【例 3-21】

In[55]:  1,2,3
Out[55]:    (1, 2, 3)

同样的还可以用圆括号括起定义元组。
【例 3-22】

In[56]:  (1,2,3)
Out[56]:    (1, 2, 3)
当定义只包含一个值的元组时需要在它的后面加上逗号。
【例 3-23】
In[57]:  31
Out[57]:    31
In[58]: 31,
Out[58]:    (31,)
In[59]: (31,)
Out[59]:    (31,)
元组并不太复杂,他的创建和访问与序列一致,除此之外可对元组执行的操作不多。

3.2.2 字符串
1. 字符串的概述
字符串在Python语言中很常见,它是一种最常用的数据类型。创建字符串很简单,只需要在引号(‘’或“”)内赋值一个由字符数字等组成的变量即可。例如

【例 3-24】

In[1]:   name1 = 'Kitty'
In[2]   name1
Out[2]: 'Kitty'
In[3]   name2 = "Tom"
In[4]   name2
Out[4]  'Tom'

除此之外,字符串本身也是一种序列,因此适用于序列的操作也同样适用于字符串。可以通过下标索引以及方括号截取字符串的方式访问字符串。而字符串的更新、修改删除等操作通过表格进行简单的说明。

表 3-1 字符串的基本操作
操作符 描述 实例

  • 字符串连接
In[5]:   name1+name2
Out[5]: 'KittyTom'
  • 重复输出字符串
In[6]:   name2 * 2
Out[6]: 'TomTom'

[] 通过索引获取字符串中字符

In[7]:   name2[2]
Out[7]: 'm'

[:] 截取字符串中的一部分

In[8]:   name1[2:4]
Out[8]: 'tt'

in 如果字符串中包含给定的字符返回True

In[9]:   'K' in name1
Out[9]: True

not in 如果字符串中不包含给定的字符返回True

In[10]:  'K' not in name2
Out[10]:    True

2. 字符串用法

由于字符串很常用,因此字符串的方法也非常多,这里列一些较为常用的字符串方法来举例说明。

1)字符串方法举例:
(1)find方法:
我们使用find()函数在字符串中查找子串,如果找到,就返回子串的第一个字符的位置,未找到则返回-1。当出现返回值为0时,表明恰巧在最开始处找到了指定的子串。

【例 3-25】

In[11]:  sentence = 'Actions speak louder than words.'
In[12]  sentence.find('speak')
Out[12]:    8
In[13]  sentence.find('pick')
Out[13] -1
In[14]  sentence.find('Actions')
Out[14] 0
同时,find方法的第二个和第三个参数分别代表搜索的起点与终点,通过起点与终点,指明了搜索范围。需要注意的是,范围包含起点但不包含终点。

【例 3-26】
In[15] sentence.find(‘s’,3,10)

Out[15]  6

(2)join方法:
join方法用于合并字符串,需要注意的是所有合并的序列元素都必须是字符串。

【例 3-27】

In[16]:  number_list = ['1','2','3','4','5']
In[17]  add = '+'
In[18]: add.join(number_list)
Out[18] '1+2+3+4+5'

(3)split方法:
plit是非常重要的字符串方法,它的作用与join方法相反,用于将字符串按照分隔符拆分为序列。如果没有指定分隔符,则在单个或多个连续的空白字符处进行拆分。

【例 3-28】

In[19]:  '1+2+3+4+5'.split('+')
Out[19] ['1', '2', '3', '4', '5']
In[20]: "I am a student from BUPT".split()
Out[20] ['I', 'am', 'a', 'student', 'from', 'BUPT']

(4)strip方法:
使用strip方法将字符串开头和末尾的空白删除,并返回删除后的结果,需要注意的是strip()函数删除并不会删除字符串中间的空格。同样的,在strip()函数中指定字符则可以删除在开头或末尾的对应字符,而中间的字符不会被删掉。

【例 3-29】

In[21]:  "      I am a student from BUPT       ".strip()
Out[21] 'I am a student from BUPT'
In[22]: '*****!!!!!Something important!!!!!*****'.strip('*!')
Out[22] 'Something important'
strip()函数在处理数据中十分常见,当进行比较或切分操作之前,通常使用strip()去掉不小心在尾部加上的空格,以免出现错误。

(5)lower方法:

用于将字符串中的大写字符全部替换为小写,当用户不想区分字符串大小写时很重要。比如用户名字、地址等信息往往大小写多样,而转换为字符串在存储与查找时,应先将他们全部处理为小写后,再进行操作。

【例 3-30】

In[23]:  'My favourite character is Mickey Mouse'.lower()
Out[23] 'my favourite character is mickey mouse'

个人公众号:yk 坤帝
后台回复 基础学习系列 获取完整源代码

全网最全Python的基本用法,序列,列表,字符串,方法解析(案例)相关推荐

  1. 全网最全python实现数据挖掘,数据分析(matlablib,pandas,numpy,量化分析)(附源代码)

    全网最全python实现数据挖掘,数据分析(matlablib,pandas,numpy,量化分析)(附源代码) 1.横直方图电影票房 2.散点图3月与10月每天的天气 3.条形图电影票房 4.条形图 ...

  2. 全网最全python爬虫系统进阶学习(附原代码)学完可就业

    个人公众号 yk 坤帝 后台回复 爬虫进阶 获取全部源代码 5.2(第二天) 第一章 爬虫介绍 1.认识爬虫 第二章:requests实战(基础爬虫) 1.豆瓣电影爬取 2.肯德基餐厅查询 3.破解百 ...

  3. python中sorted用法_Python中sorted()方法的用法

    1.先说一下iterable,中文意思是迭代器. Python的帮助文档中对iterable的解释是:iteralbe指的是能够一次返回它的一个成员的对象.iterable主要包括3类: 第一类是所有 ...

  4. python所有函数用法_Python函数使用方法(高级用法)

    前面章节,已经介绍了 Python 函数的所有基本用法和使用注意事项.但是,Python 函数的用法还远不止此,Python 函数还支持赋值.作为其他函数的参数以及作为其他函数的返回值. 首先,Pyt ...

  5. Python:字典列表字符串方法测试

    测试的一些Python中的关于字典.列表.字符串的使用方法,放在这里备查. 整个测试代码和说明如下: # -*- coding: utf-8 -*- """Python: ...

  6. Python基础——第二章 第一部分 字符串方法 转义及编码解码

    1.字符串方法 1.1.查 (1)count:统计字符串中某元素出现的次数 >>>zf = 'hello world' >>>zf.count('l') 3 > ...

  7. PYTHON自动化Day4-交换变量,字符串方法,拷贝,集合,文件,文件指针

    一.判断 # 非空即真.非0即真 # 不为空的话就是true,是空的话就是false # 只要不是0就是true,是0就是false# 布尔类型 # True False name = input(' ...

  8. 【办公自动化】全网最全python中openpyxl库用法

    python中的opepyxl库是一个用于读写Excel2010版本以上的xlsx/xlsm/xltx/xltm文件的Python库,拥有十分强大的功能. 此篇文章介绍openpyxl中的大部分功能. ...

  9. 全网最全python爬虫精进

    个人公众号 yk 坤帝 获取更多学习资料 之前我们讨论了一下请求和响应,接下来几天我们都会讨论对数据的处理. 接触了爬虫这个领域,大家肯定都听过正则表达式的鼎鼎大名,不过今天我们暂时不谈正则,我们先来 ...

最新文章

  1. Rocksdb 利用recycle_log_file_num 重用wal-log文件
  2. Dataset之RentListingInquries:RentListingInquries(Kaggle竞赛)数据集的简介、下载、案例应用之详细攻略
  3. 大端模式小端模式 主机序网络序
  4. rx.observable_在Spring MVC流中使用rx-java Observable
  5. CentOS6.5 搭建 LNMP (linux + nginx + mysql + php)
  6. 二叉树---树的深度递归理解
  7. JavaScript高级程序设计学习笔记--事件
  8. day 67 django 之ORM 增删改查基础
  9. pacific-atlantic-water-flow(不错)
  10. 恢复oracle数据步骤,通过数据泵expdp、impdp方式备份与还原/恢复 Oracle数据库(详细过程)-Oracle...
  11. android View的层级结构
  12. 【芯片学习】X86 CPU 发展历史与分析——1971~2020——明白Intel架构的变迁
  13. VSCrawler 爬取美女图片
  14. 【锋迷商城】01数据库设计
  15. STC89C52驱动W25Q32测试笔记
  16. 部署 GlusterFS 群集
  17. python多线程(Multiprocessing)与多线程(Multithreading)区别优缺点最详细解释
  18. 【leetcode 971】 翻转二叉树以匹配先序遍历
  19. 【沃顿商学院学习笔记】管理学——07腐败控制理论The Control Theories of Corruption
  20. 暂停后重开笔记本电脑音量突然变大

热门文章

  1. APP推广新思路?视频推广让你的APP一夜蹿红
  2. 机器学习读书笔记(二)
  3. “sample”, “batch”, “epoch” 分别是什么?
  4. 【2022年终总结】会者定离,一期一祈
  5. phpems 修改模板_phpems二次开发流程分析
  6. Head First Design Patten装饰者模式
  7. 大小写 数据库 达梦_达梦数据库,大小写敏感这个参数怎么设置
  8. Environment.Exit(0)和Environment.Exit()方法
  9. UWB芯片DW3000之MAC层(四)CCA空闲信道评估机制
  10. PS教程——复古人物海报效果