零基础入门学习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代码也将日益增加,并且也越来越复杂, 所以呢,我们需要找寻一 ...
随机推荐
- Android Debuggerd 简要介绍和源码分析(转载)
转载: http://dylangao.com/2014/05/16/android-debuggerd-%E7%AE%80%E8%A6%81%E4%BB%8B%E7%BB%8D%E5%92%8C%E ...
- selenium中关于driver的小记
1: Ubuntu系统将driver放入 /usr/bin 目录下,即可直接启动浏览器. 2: WIN10系统讲Driver放入python安装的根目录下,即可直接启动浏览器. 3: WIN10 ...
- Tinkoff Challenge - Elimination Round C. Mice problem(模拟)
传送门 题意 给出一个矩形的左下角和右上角的坐标,给出n个点的初始坐标和运动速度和方向,询问是否存在一个时间使得所有点都在矩形内,有则输出最短时间,否则输出-1 分析 对于每个点如果运动过程中都不在矩 ...
- bzoj 1017: [JSOI2008]魔兽地图DotR【树形dp+背包】
bzoj上是一个森林啊--? dp还是太弱了 设f[i][j][k]为到点i,合成j个i并且花费k金币能获得的最大力量值,a[i]为数量上限,b[i]为价格,p[i]为装备力量值 其实这个状态设计出来 ...
- poj 2398 Toy Storage【二分+叉积】
二分点所在区域,叉积判断左右 #include<iostream> #include<cstdio> #include<cstring> #include<a ...
- 洛谷P3287 [SCOI2014]方伯伯的玉米田(树状数组)
传送门 首先要发现,每一次选择拔高的区间都必须包含最右边的端点 为什么呢?因为如果拔高了一段区间,那么这段区间对于它的左边是更优的,对它的右边会更劣,所以我们每一次选的区间都得包含最右边的端点 我们枚 ...
- Ubuntu 18 开机后直接进入命令行界面,没法进入桌面
应该是之前不知道干啥,删了gnome的一个东西,导致没法正常进入 暴力解决,直接重装桌面环境 sudo apt install ubuntu-desktop
- Bootstrap简介及安装使用
Bootstrap 简介 什么是 Bootstrap? Bootstrap 是一个用于快速开发 Web 应用程序和网站的前端框架.Bootstrap 是基于 HTML.CSS.JAVASCRIPT 的 ...
- LightOj 1138 Trailing Zeroes (III)
题目描述: 假设有一个数n,它的阶乘末尾有Q个零,现在给出Q,问n最小为多少? 解题思路: 由于数字末尾的零等于min(因子2的个数,因子5的个数),又因为2<5,那么假设有一无限大的数n,n= ...
- [USACO 2012 Feb Gold] Cow Coupons【贪心 堆】
传送门1:http://www.usaco.org/index.php?page=viewproblem2&cpid=118 传送门2:http://www.lydsy.com/JudgeOn ...