零基础入门学习Python(11)--列表:一个打了激素的数组(2)
前言
上节课我们介绍一个打了激素的数组,叫做列表。列表我们比作一个大仓库,你所能够具现化的东西,都可以往里面扔,它包罗万象。另外还介绍了三个往列表添加元素的方法,分别是:
append(),extend(),insert()
append()和extend()这两个方法都只有1个参数:
append参数是一个准备插入列表的元素.
extend参数是一个列表,它是用一个列表来扩展另一个列表
insert()方法有2个参数,第1个参数是带插入位置的索引值,第2个参数是准备插入的元素.
这个课我们接着谈一下列表常用的一些方法
知识点
从列表中获取元素
跟数组一样,我们可以通过元素的索引值index从列表获取单个元素,注意,列表的索引值是从0开始。
例:
>>> member = ['小甲鱼', '小布丁', '黑夜', '怡静', '葫芦娃哇', '竹林小溪', 'Crazy迷恋']
>>> member[0]
'小甲鱼'
>>> member[1]
'小布丁'
>>> temp = member[0]
>>> member[0] = member[1]
>>> member
['小布丁', '小布丁', '黑夜', '怡静', '葫芦娃哇', '竹林小溪', 'Crazy迷恋']
>>> member[1] = temp
>>> member
['小布丁', '小甲鱼', '黑夜', '怡静', '葫芦娃哇', '竹林小溪', 'Crazy迷恋']
>>>
从列表中删除元素
remove()
>>> member.remove('怡静')
>>> member
['小布丁', '小甲鱼', '黑夜', '葫芦娃哇', '竹林小溪', 'Crazy迷恋']
del
>>> del member[1]
>>> member
['小布丁', '黑夜', '葫芦娃哇', '竹林小溪', 'Crazy迷恋']
>>> del member[1]
>>> member
['小布丁', '黑夜', '葫芦娃哇', '竹林小溪', 'Crazy迷恋']
>>> del member
>>> member
Traceback (most recent call last):
File "<pyshell#54>", line 1, in <module>
member
NameError: name 'member' is not defined
pop()
因为Python的列表是利用栈数据结构进行存储的,因此有pop这个弹栈的方法。
pop方法是从列表中取出一个元素,并返回给你
>>> member.pop()
'Crazy迷恋'
>>> member
['小布丁', '黑夜', '葫芦娃哇', '竹林小溪']
>>>
>>> name = member.pop()
>>> name
'竹林小溪'
>>> member
['小布丁', '黑夜', '葫芦娃哇']
>>>
>>> member.pop(1)
'黑夜'
>>> member
['小布丁', '葫芦娃哇']
>>>
列表分片
利用索引值,每次我们可以从列表获取一个元素,但是我们总是贪心的,如果一次性需要获取多个元素,有没有办法实现呢?利用列表分片,我们可以简单的实现这个要求。
>>> member
['小布丁', '黑夜', '葫芦娃哇', '竹林小溪', 'Crazy迷恋']
>>>
>>> member[1:3]
['黑夜', '葫芦娃哇']
>>> member
['小布丁', '黑夜', '葫芦娃哇', '竹林小溪', 'Crazy迷恋']
>>>
>>> member[:3]
['小布丁', '黑夜', '葫芦娃哇']
>>> member[:]
['小布丁', '黑夜', '葫芦娃哇', '竹林小溪', 'Crazy迷恋']
>>> member[1:]
['黑夜', '葫芦娃哇', '竹林小溪', 'Crazy迷恋']
>>> member2 = member[:]
>>> member2
['小布丁', '黑夜', '葫芦娃哇', '竹林小溪', 'Crazy迷恋']
课后习题
测试题
下边的列表分片操作会打印什么内容?
>>> list1 = [1,3,2,9,7,8]
>>> list1[2:5]
运行结果:
[2, 9, 7]
请问list1[0]和list1[0:1]一样吗?
不一样,list1[0]返回第0个元素的值,list1[0:1]返回一个只含有第0个元素的列表。
>>> list1[0]
1
>>> list1[0:1]
[1]
>>>
如果你每次想从列表末尾取出一个元素,并将这个元素插入列表的最前边,你会怎么做?
>>> list1 = [1, 3, 2, 9, 7, 8]
>>>
>>> list1.insert(0,list1.pop())
>>> list1
[8, 1, 3, 2, 9, 7]
试试打印list1[-3:-1]
>>> list1 = [1, 3, 2, 9, 7, 8]
>>> list1[-3:-1]
[9, 7]
python 的列表很聪明,支持负数索引,如图:
正常索引是从左到右索引,负数索引是从右到左。
在进行分片的时候,我们知道分片开始和位置结束需要进行指定,但其实还有另外一个隐藏的设置:步长。
在普通的分片操作中,步长默认设置为1,表示逐个遍历元素。其实我们可以人为调整步长达到不可告人的秘密。
>>> list1 = [1, 3, 2, 9, 7, 8]
>>> list1[0:6:2]
[1, 2, 7]
>>> list1[::0]
Traceback (most recent call last):
File "<pyshell#32>", line 1, in <module>
list1[::0]
ValueError: slice step cannot be zero
>>> list1[::-2]
[8, 9, 3]
可用利用分片完成列表的拷贝list2 = list1[:],那事实上可不可以直接写成list2 = list1更加简洁呢?
例如:
>>> list1 = [1, 3, 2, 9, 7, 8]
>>> list2 = list1[:]
>>> list2
[1, 3, 2, 9, 7, 8]
>>>
>>> list3 = list1
>>> list3
[1, 3, 2, 9, 7, 8]
>>>
看上去貌似一样。但事实上呢?我们利用列表的一个方法进行修改,看下差别:
>>> list1.sort()
>>> list1
[1, 2, 3, 7, 8, 9]
>>> list2
[1, 3, 2, 9, 7, 8]
>>> list3
[1, 2, 3, 7, 8, 9]
>>>
零基础入门学习Python(11)--列表:一个打了激素的数组(2)的更多相关文章
- 《零基础入门学习Python》【第一版】视频课后答案第001讲
测试题答案: 0. Python 是什么类型的语言? Python是脚本语言 脚本语言(Scripting language)是电脑编程语言,因此也能让开发者藉以编写出让电脑听命行事的程序.以简单的方 ...
- 零基础入门学习Python(1)--我和Python的第一次亲密接触
前言 最近在学习Python编程语言,于是乎就在网上找资源.其中小甲鱼<零基础入门学习Python>试听了几节课,感觉还挺不错,里面的视频都是免费下载,小甲鱼讲话也挺幽默风趣的,所以呢,就 ...
- 【Python教程】《零基础入门学习Python》(小甲鱼)
[Python教程]<零基础入门学习Python>(小甲鱼) 讲解通俗易懂,诙谐. 哈哈哈. https://www.bilibili.com/video/av27789609
- 学习参考《零基础入门学习Python》电子书PDF+笔记+课后题及答案
国内编写的关于python入门的书,初学者可以看看. 参考: <零基础入门学习Python>电子书PDF+笔记+课后题及答案 Python3入门必备; 小甲鱼手把手教授Python; 包含 ...
- 学习《零基础入门学习Python》电子书PDF+笔记+课后题及答案
初学python入门建议学习<零基础入门学习Python>.适合新手入门,很简单很易懂.前一半将语法,后一半讲了实际的应用. Python3入门必备,小甲鱼手把手教授Python,包含电子 ...
- 零基础入门学习Python(10)--列表:一个打了激素的数组
前言 有时候我们需要把一些东西暂时保存起来,因为他们有着一些直接或间接的联系,我们需要把它们放在某个组或者集合中,未来可能用得上. 很多接触过编程的朋友都知道,都接触过数组这个概念,那么数组这个概念事 ...
- 零基础入门学习Python(13)--元组:戴上了枷锁的列表
前言 这节课我们讨论主题是元祖:我们有个小标题戴上了枷锁的列表 我们都知道早在300多年前,孟德斯鸠在变法的时候说过,一切拥有权力的人都容易被滥用权力,这是万古不变的一条经验.但是呢,凡是拥有大权利的 ...
- 零基础入门学习Python(19)--函数:我的地盘听我的
知识点 函数与过程 在许多编程语言中,函数(function)是有返回值的,过程(procedure)是简单.特殊并且没有返回值的.而在Python中,严格来说只有函数没有过程. 例如: >&g ...
- 零基础入门学习Python(17)--函数:Python的乐高积木
前言 相信大家小时候都玩过神奇的乐高积木, 只要通过想象力和创造力我们可以拼凑很多神奇的东西,那么随着我们学习的深入,我们编写的Python代码也将日益增加,并且也越来越复杂, 所以呢,我们需要找寻一 ...
随机推荐
- Fiddler对https抓包时,提示"HTTPS decryption is disabled."原因及破解
Fiddler对https抓包时,提示"HTTPS decryption is disabled." 原因:没有启用 https 解密. 破解: ----------------- ...
- bzoj 2423: [HAOI2010]最长公共子序列【dp+计数】
设f[i][j]为a序列前i个字符和b序列前j个字符的最长公共子序列,转移很好说就是f[i][j]=max(f[i-1][j],f[i][j-1],f[i-1][j-1]+(a[i]==b[j])) ...
- bzoj 1025: [SCOI2009]游戏【数学+dp】
很容易发现行数就是lcm环长,也就是要求和为n的若干数lcm的个数 有结论若p1^a1+p2^a2+...+pm^am<=n,则ans=p1^a1p2^a2..*pm^am是n的一个可行答案.( ...
- ubuntu vim设置显示行号
打开vim的配置文件 /etc/vim/vimrc sudo vim /etc/vim/vimrc 然后找到 #set number ,把注释取消就行了 如果没有,就自己加一行
- jQuery查找
导航查找方法: 向下查找兄弟标签: $().next() $().nextAll() 向上查找兄弟标签: 可以查找所有兄弟标签: 查找子标签 查找父级标签: $().parent() $().pare ...
- ACM二分查找模板
int main(){ == key int m; while ( l <= r ) { m = ( l + r ) >> 1; if ( x[m] == key ) return ...
- Ubuntu下如何用命令运行deb安装包
转载自 WindTaiL的博客 如果ubuntu要安装新软件,已有deb安装包(例如:iptux.deb),但是无法登录到桌面环境.那该怎么安装?答案是:使用dpkg命令. dpkg命令常用格式如下: ...
- 题解报告:hdu 2072 单词数
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2072 题目: Problem Description lily的好朋友xiaoou333最近很空,他想 ...
- python_数据类型基本操作(2)
概览: 第1章 基础数据类型宏观的初识第2章 int 第3章 bool 第4章 str 4.1 python体现形式 4.2 引号用法 4.3 字符串运算 4.3.1 字符串相加 4.3.2 字符串相 ...
- java_dom4j解析xml
package forRQ; import java.io.File;import java.net.MalformedURLException;import java.util.Iterator;i ...