前言

上节课我们介绍一个打了激素的数组,叫做列表。列表我们比作一个大仓库,你所能够具现化的东西,都可以往里面扔,它包罗万象。另外还介绍了三个往列表添加元素的方法,分别是:

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)的更多相关文章

  1. 《零基础入门学习Python》【第一版】视频课后答案第001讲

    测试题答案: 0. Python 是什么类型的语言? Python是脚本语言 脚本语言(Scripting language)是电脑编程语言,因此也能让开发者藉以编写出让电脑听命行事的程序.以简单的方 ...

  2. 零基础入门学习Python(1)--我和Python的第一次亲密接触

    前言 最近在学习Python编程语言,于是乎就在网上找资源.其中小甲鱼<零基础入门学习Python>试听了几节课,感觉还挺不错,里面的视频都是免费下载,小甲鱼讲话也挺幽默风趣的,所以呢,就 ...

  3. 【Python教程】《零基础入门学习Python》(小甲鱼)

    [Python教程]<零基础入门学习Python>(小甲鱼) 讲解通俗易懂,诙谐. 哈哈哈. https://www.bilibili.com/video/av27789609

  4. 学习参考《零基础入门学习Python》电子书PDF+笔记+课后题及答案

    国内编写的关于python入门的书,初学者可以看看. 参考: <零基础入门学习Python>电子书PDF+笔记+课后题及答案 Python3入门必备; 小甲鱼手把手教授Python; 包含 ...

  5. 学习《零基础入门学习Python》电子书PDF+笔记+课后题及答案

    初学python入门建议学习<零基础入门学习Python>.适合新手入门,很简单很易懂.前一半将语法,后一半讲了实际的应用. Python3入门必备,小甲鱼手把手教授Python,包含电子 ...

  6. 零基础入门学习Python(10)--列表:一个打了激素的数组

    前言 有时候我们需要把一些东西暂时保存起来,因为他们有着一些直接或间接的联系,我们需要把它们放在某个组或者集合中,未来可能用得上. 很多接触过编程的朋友都知道,都接触过数组这个概念,那么数组这个概念事 ...

  7. 零基础入门学习Python(13)--元组:戴上了枷锁的列表

    前言 这节课我们讨论主题是元祖:我们有个小标题戴上了枷锁的列表 我们都知道早在300多年前,孟德斯鸠在变法的时候说过,一切拥有权力的人都容易被滥用权力,这是万古不变的一条经验.但是呢,凡是拥有大权利的 ...

  8. 零基础入门学习Python(19)--函数:我的地盘听我的

    知识点 函数与过程 在许多编程语言中,函数(function)是有返回值的,过程(procedure)是简单.特殊并且没有返回值的.而在Python中,严格来说只有函数没有过程. 例如: >&g ...

  9. 零基础入门学习Python(17)--函数:Python的乐高积木

    前言 相信大家小时候都玩过神奇的乐高积木, 只要通过想象力和创造力我们可以拼凑很多神奇的东西,那么随着我们学习的深入,我们编写的Python代码也将日益增加,并且也越来越复杂, 所以呢,我们需要找寻一 ...

随机推荐

  1. python 面向对象九 定制类

    一.定制类,实质就是我们自己重写特殊函数 看到类似__slots__这种形如__xxx__的变量或者函数名就要注意,这些在Python中是有特殊用途的. __slots__我们已经知道怎么用了,__l ...

  2. VMware 12安装Mac OS X 10.11&解决上网的问题

    近日想在Win10上安装Mac OS 玩玩,于是上网搜了相关资源,查看了相关经验分享,开始着手安装.系统很快成功安装,但最大问题是虚拟机中的Mac OS无法上网.费了很长时间,最终看到Ping通结果, ...

  3. c语言程序设计案例教程(第2版)笔记(六)—字符串处理实例

    字符串处理 功能描述:从键盘输入一个文本行后,为用户提供菜单选择,实现字符串一些操作——显示文本行.查找并替换指定子串.删除指定子串.统计指定子串数目. 实现代码: #include<stdio ...

  4. Hdu 5384 Danganronpa (AC自动机模板)

    题目链接: Hdu 5384 Danganronpa 题目描述: 给出n个目标串Ai,m个模式串Bj,问每个目标串中m个模式串出现的次数总和为多少? 解题思路: 与Hdu 2222  Keywords ...

  5. 题解报告:hdu 1260 Tickets

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1260 Problem Description Jesus, what a great movie! T ...

  6. 加权平均值 WAvg”

    https://wenku.baidu.com/view/13d974fff8c75fbfc77db2d3.html

  7. jmeter(八)HTTP属性管理器HTTP Cookie Manager、HTTP Request Defaults

    Test Plan的配置元件中有一些和HTTP属性相关的元件:HTTP Cache Manager.HTTP Authorization Manager.HTTP Cookie Manager.HTT ...

  8. 423 Reconstruct Original Digits from English 从英文中重建数字

    给定一个非空字符串,其中包含字母顺序打乱的英文单词表示的数字0-9.按升序输出原始的数字.注意:    输入只包含小写英文字母.    输入保证合法并可以转换为原始的数字,这意味着像 "ab ...

  9. ZOJ 3605Find the Marble(dp)

    ZOJ 3605 大体意思就是 找出随机选了K个交换后 石子在第i个罐子里的概率最大 也就是可能的总数最大 这样就可以写出递推方程 dp[i][j][k] += dp[i-1][e][k]; (0&l ...

  10. 面试题9-用两个栈来实现一个队列,完成队列的Push和Pop操作

    题目 用两个栈来实现一个队列,完成队列的Push和Pop操作. 队列中的元素为int类型. 思路: 一个栈压入元素,而另一个栈作为缓冲,将栈1的元素出栈后压入栈2中 代码 import java.ut ...