零基础入门学习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代码也将日益增加,并且也越来越复杂, 所以呢,我们需要找寻一 ...
随机推荐
- 小程序 获取地理位置-- wx.getLocation
话不多说直接上栗子 //首先声明变量data:{ showLocationAuth:fasle } //这是第一种逻辑实现方式 点击按钮//当第一次点击授权按钮,用户取消授权之后,就会显示 授权当前定 ...
- #define及其用法
#define 在#define中,标准只定义了#和##两种操作.#用来把参数转换成字符串,##则用来连接前后两个参数,把它们变成一个字符 串. #include<stdio.h ...
- 配置yum源的步骤(阿里源)
配置yum源的步骤1.可以移除默认的yum仓库,也就是删除 /etc/yum.repos.d/底下所有的.repo文件(踢出国外的yum源) 1.配置yum源,找到阿里云的官方镜像源地址 https: ...
- 环境变量解释以及在Linux下的环境变量设置
一.环境变量解释 环境变量是什么? 引用百度百科里面的解释:环境变量是操作系统中一个具有特定名字的对象,它包含了一个或者多个应用程序所将使用到的信息.例如Windows系统中的path环境变量,当要求 ...
- [ZOJ1140]Courses 课程
Description 给出课程的总数P(1<=p<100),学生的总数N(1<=N<=300) 每个学生可能选了一门课程,也有可能多门,也有可能没有. 要求选出P个学生来组成 ...
- Poj 3189 Steady Cow Assignment (多重匹配)
题目链接: Poj 3189 Steady Cow Assignment 题目描述: 有n头奶牛,m个棚,每个奶牛对每个棚都有一个喜爱程度.当然啦,棚子也是有脾气的,并不是奶牛想住进来就住进来,超出棚 ...
- 使用VS2015打包winform程序安装包简单方法(不需要InstallShield)
转载自: DGPLM博客 使用VS2015打包winform程序安装包简单方法(不需要InstallShield)
- greater()和less()的使用
greater和less是头文件<xfunctional>中定义的两个结构.下面看它们 的定义,greater和less都重载了操作符(). // TEMPLATE STRUCT grea ...
- 员工管理系统(集合与IO流的结合使用 beta5.0 BufferedReader/ BufferedWriter)
package cn.gee; public class Emp { private String id;//员工编号 一般是唯一的 private String sname; private int ...
- [转]强制取消TFS2008中其它成员的签出文件
本文转自:http://www.cnblogs.com/georgehu/archive/2010/10/23/1859573.html 有个项目,以前的成员离职了,刚好又签出了一个文件在TFS中并且 ...