13_Python数据类型字符串加强_Python编程之路

前面已经跟大家讲了python的数据类型,但是没有深入去讲,这一节我们深入了解python数据类型的使用

列表数据类型有很多方法,我们在这里一一跟大家介绍

1.append

方法append用于将一个对象附加到列表末尾。

例如以下代码

In [1]: my_list = [1, 2, 3, 4]

In [2]: my_list.append(5)

In [3]: my_list
Out[3]: [1, 2, 3, 4, 5]

注意append和其他方法一样,只修改列表,不返回值

2.clear

方法clear就地清空列表的内容

例如以下代码

In [4]: my_list = [1, 2, 3, 4]

In [5]: my_list.clear()

In [6]: my_list
Out[6]: []

通过切片也能实现这个功能

In [7]: my_list = [1, 2, 3, 4]

In [8]: my_list[:] = []

In [9]: my_list
Out[9]: []

3.copy

copy用于复制列表,但要注意,他只是将一个变量关联到这个列表

下面只是通过赋值实现简单的复制

In [10]: my_list = [1, 2, 3, 4]

In [11]: other_list = my_list

In [12]: other_list
Out[12]: [1, 2, 3, 4]

要让my_list和other_list指向不同的列表,就必须用到copy

例如以下代码

In [15]: my_list = [1, 2, 3, 4]

In [16]: other_list = my_list.copy()

In [17]: other_list
Out[17]: [1, 2, 3, 4]

In [18]: other_list[0] = ‘one‘

In [19]: other_list
Out[19]: [‘one‘, 2, 3, 4]

In [20]: my_list
Out[20]: [1, 2, 3, 4]

可以看出两个列表指向的不是同一个内存地址

4.count

计算指定的元素在列表中出现了多少次

In [21]: word_list = [‘to‘, ‘be‘, ‘or‘, ‘not‘, ‘to‘, ‘be‘]

In [22]: word_list.count(‘to‘)
Out[22]: 2

注意,对于多维列表,情况会有点不同

In [23]: multi_list = [1, [1, 2], 1, [1, 2 ,3]]

In [24]: multi_list.count(1)
Out[24]: 2

In [25]: multi_list.count([1,2])
Out[25]: 1

5.extend

可以将多个值附加到列表末尾,也就是说可以将两个列表连接,或者是说你可使用一个列表去扩展另一个列表

In [26]: a_list = [1, 2]

In [27]: b_list = [3, 4]

In [28]: a_list.extend(b_list)

In [29]: a_list
Out[29]: [1, 2, 3, 4]

这看起来有点像下面这几行代码,将两个列表连接

In [30]: a_list = [1, 2]

In [31]: b_list = [3, 4]

In [32]: a_list + b_list
Out[32]: [1, 2, 3, 4]

但是要注意的是这里并不能直接把结果赋值

除了使用上面的extend方法外,我们还可以使用切片操作

In [39]: a_list = [1, 2]

In [40]: b_list = [3, 4]

In [41]: a_list[len(a_list):] = b_list

In [42]: a_list
Out[42]: [1, 2, 3, 4]

但不得不说可读性太差了

6.index

方法index在列表中查找指定值第一次出现的索引

例如以下代码

In [43]: my_list = [1, 2, ‘susmote‘, ‘ayesup‘, ‘ayesup‘, ‘susmote‘, 2, 1]

In [44]: my_list.index(‘susmote‘)
Out[44]: 2

在这里要强调一下,index只是查找出第一次出现的索引

7.insert

方法insert用于将一个对象插入列表

例如以下代码

In [46]: my_list = [1, 2, 3, 4, 6]

In [47]: my_list.insert(4, 5)

In [48]: my_list
Out[48]: [1, 2, 3, 4, 5, 6]

注意第一个参数是索引,第二是插入的值,插入的值在索引的前面

也可以使用切片完成以上操作

In [51]: my_list = [1, 2, 3, 4, 6]

In [52]: my_list[4:4] = [5]

In [53]: my_list
Out[53]: [1, 2, 3, 4, 5, 6]

8.pop

删除一个元素,默认为最后一个元素,最后会返回这个元素

例如以下代码

In [54]: my_list = [1, 2, 3, 4, 5]

In [55]: my_list.pop()
Out[55]: 5

In [56]: my_list
Out[56]: [1, 2, 3, 4]

In [57]: my_list.pop(0)
Out[57]: 1

In [58]: my_list
Out[58]: [2, 3, 4]

pop是唯一既修改列表又返回一个非None值的列表方法。

使用pop可实现一种常见的数据结构——栈(stack),这个在后面的文章中的我会讲到,这里不做详细说明

9.remove

删除第一个为指定值的元素

例如以下代码

In [59]: word_list = [‘to‘, ‘be‘, ‘or‘, ‘not‘, ‘to‘, ‘be‘]

In [60]: word_list.remove(‘to‘)

In [61]: word_list
Out[61]: [‘be‘, ‘or‘, ‘not‘, ‘to‘, ‘be‘]

10.reverse

方法reverse按相反的顺序排列列表中的元素

In [62]: my_list = [1, 2, 3, 4, 5]

In [63]: my_list.reverse()

In [64]: my_list
Out[64]: [5, 4, 3, 2, 1]

如果要按相反的顺序迭代序列,可使用函数reversed。这个函数不返回列表,而是返回 一个迭代器(迭代器将在第9章详细介绍)。你可使用list将返回的对象转换为列表。

例如以下代码

In [65]: my_list = [1, 2, 3, 4, 5]

In [66]: list(reversed(my_list))
Out[66]: [5, 4, 3, 2, 1]

11.sort

方法sort用于对列表就地排序,但并不返回值

例如

In [68]: my_list = [ 7, 4, 3, 5, 8, 9, 1]

In [69]: my_list.sort()

In [70]: my_list
Out[70]: [1, 3, 4, 5, 7, 8, 9]

由于没有返回值,所以如果需要方便的将排序的值赋给一个变量,可以使用函数sorted

In [71]: my_list = [ 7, 4, 3, 5, 8, 9, 1]

In [72]: other_list = sorted(my_list)

In [73]: my_list
Out[73]: [7, 4, 3, 5, 8, 9, 1]

In [74]: other_list
Out[74]: [1, 3, 4, 5, 7, 8, 9]

注意,对于sort他是有两个可选参数的:key 和 reverse

key代表你排序依照的关键字

reverse指出是否要按相反的顺序对列表进行排序, True 或者 False

例如下面两段代码

key = len

In [75]: word_list = [‘aardvark‘, ‘abalone‘, ‘acme‘, ‘add‘, ‘aerate‘]

In [76]: word_list.sort(key=len)

In [77]: word_list
Out[77]: [‘add‘, ‘acme‘, ‘aerate‘, ‘abalone‘, ‘aardvark‘]

reverse = True

In [78]: my_list = [ 7, 4, 3, 5, 8, 9, 1]

In [79]: my_list.sort(reverse=True)

In [80]: my_list
Out[80]: [9, 8, 7, 5, 4, 3, 1]

欢迎访问我的博客网 www.susmote.com

原文地址:https://www.cnblogs.com/susmote/p/8922536.html

时间: 2024-11-09 10:15:29

13_Python数据类型字符串加强_Python编程之路的相关文章

04_Python的数据类型1数值和字符串_Python编程之路

上一节我们通过一个helloworld程序学习python的一些简单操作,还有输入与输出 这节我们来讲Python的数据类型与变量的操作 Python的交互器 在讲这个之前,我要先讲一下python的交互器,之后讲解代码(除了做简单项目)都在交互器上进行,这样可能比较直接一些,有利于刚接触python的人理解代码 python在命令行自带一个交互器,我们可以直接通过输入python进入python的交互器 但是他的功能并不是很齐全,比如代码着色,和变量的提示,以及操作shell命令的功能都没有

07_Python的控制判断循环语句1(if判断for循环)_Python编程之路

Python的数据类型在前几节我们都简单的一一介绍了,接下来我们就要讲到Python的控制判断循环语句 在现实编程中,我们往往要利用计算机帮我们做大量重复计算的工作,在这样的情况下,需要机器能对某个条件进行判断,或是对某个行为进行重复操作 这时我们就必须要知道如何去编写循环判断语句 if... elif... else if也就是如果的意思,后面需要加一个判断条件,如果判断条件为真,则执行if下的操作,如果为假则跳过操作 注意在每个判断条件后面要加上冒号,且if下面的语句要注意缩进 In [1]

03-第一个脚本程序以及输入输出_Python编程之路

上节课已经教大家安装了Python的解释器,那么这节课我们就可以正式来写代码了 说明:在下面的代码演示中,我将大部分使用python交互器演示代码的输入输出,注意">>>"后面代表的是输入的代码,没有其他的标志代表的是输出 按照以往的惯例,首先我们还是写一个Hello world 程序 # -*- coding :utf-8 -*- #Author = susmote print("hello world") 按照以上的程序,我们简单做一个解释 字

02-Python的下载和安装_Python编程之路

原文发布在特克斯博客www.susmote.com 之前给大家讲了关于python的背景知识,还有Python的优点和缺点,相信通过之前的介绍很多人已经清楚自己到底要不要选择学习Python,如果已经很有兴趣了,那么你就可以自己查看一些有关Python的官方文档,或是买本书啃啃,如果你暂时还没什么兴趣,也不要着急放弃,尝试着多看几节课,如果实在没兴趣也实属正常,Python也不是最好的语言 Python的下载 Python的下载很简单,直接进入官网https://www.python.org/

12_Python的(匿名函数)Lambda表达式_Python编程之路

Python作为一门高级语言,与很多编程语言一样都具有匿名函数这一特征 匿名函数,也就Lambda表达式,通俗来讲就是不用命名的方法,直接定义,直接用即可 创建匿名函数需要用到Lambda关键字,下面我们通过一个简单的匿名函数的创建熟悉匿名函数 lambda a,b : a + b 这个表达式返回的值是a加上b的值,他需要传入两个参数,也就是a,b,同时还需要一个表达式,这样才能构成一个完整的匿名函数 通过代码完善这一部分的理解 In [1]: func = lambda a,b : a+b I

15_Python模块化编程_Python编程之路

之前跟大家讲的是一些python的数据基础,从这篇文章开始,我们开始正式学习python的模块化编程 下面我们解释一下什么叫做模块 之前已经讲过怎么去定义一个方法,如果你是用python交互器(自带交互器,或者是ipython)来学习定义方法的话,你定义完方法后,然后退出交互器,然后你再来使用这个方法,很显然,是不会成功调用的,这是因为python交互器在你退出后,会清空内存,所有定义的变量和方法都会被清理 如果你想把定义好的方法用在你的新脚本文件中,这样就必须引入一种模块机制 你可以把你写好的

服务器编程之路:进无止境(下)

(接上文) 为了找到第二个命题的解决方法,我们可以再回过头来看看本文中第一版的服务器程序.前面也说了,第一版程序的问题在于,一条线程服务一个连接,而OS切换线程的开销很大,所以造成性能上不去.但第一版程序绝对是愉快的顺序编程.如果我们想保留顺序编程,那应该怎么克服性能方面的缺陷呢? 问题被直接导向为:既然OS调度线程很吃力,那是否存在一种"用户态线程",由程序自己调度,让OS一边玩儿去? 先抛出答案,所谓的"用户态线程",我们一般的实现就是"协程(coro

ZSTU我的编程之路

浙江理工大学我的编程之路答案 语言:C/C++ 推荐编译器:Dev-C++ / CodeBlocks 严禁直接复制提交 作弊行为将会被ACM校队禁止入队 作者:JokerNoCry 1000: 送分题-A+B Problem #include <iostream> using namespace std; int main (){ int a,b; cin>>a>>b; cout<<a+b; } 零基础学C/C++ oj 题目1001--1199 1001:

编程之路

转自:http://blog.csdn.net/banketree/article/details/39995209 技术永无止境,编程方向现在越来越广了,你还在迷茫地选择方向么? 本篇将简单描述编程各个方面,以及编程之路会遇到的生活问题. 问题与解答 1.编程分为几个阶段? 高手箴言中把编程分为六个阶段:1.熟练地使用某种语言(java).2.精通基于某种平台的开发(Android).3.深入地了解某个平台系统的底层(Android 底层).4.直接在平台上进行比较深层次的开发(Android