什么是列表

列表是一系列元素,按特定顺序排列组成。列表总的元素之间没有任何关系,既可以时字符串,也可以是数字,还可以是布尔值。

由此可以看出,列表通常包含多个元素,因此再给列表命名的时候,最好使用复数,例如:names、ages等

创建列表的5种方式

用 [] 创建列表

>>> a = [1,2,3]
>>> print(a,type(a))
[1, 2, 3] <class 'list'>

用 list 创建列表

>>> b = list('abc')
>>> b,type(b)
['a', 'b', 'c'] <class 'list'>
>>> c = list((1,2,3))
>>> c
[1, 2, 3]
# 对于字典,生成的是键 key 列表。
>>> cc = list({"aa":1,"bb":3})
>>> cc
['aa', 'bb']

用 range 创建列表

>>> d = list(range(10))
>>> print(d, type(d))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] <class 'list'>
>>> dd = list(range(3,-10,-3))
>>> print(dd, type(dd))
[3, 0, -3, -6, -9] <class 'list'>

用列表推导式创建列表

>>> f = [i for i in range(5)]
>>> print(f,type(f))
[0, 1, 2, 3, 4] <class 'list'>

用 list 和 [] 创建空列表

>>> g = list()
>>> print(g)
[]
>>> h = []
>>> print(h)
[]

添加列表元素的5种方式

append()方法:真正的在尾部添加元素,速度最快。推荐使用。

注:我们发现在尾部添加元素后, b 的存储地址没有改变。原地操作列表。

>>> a = ['QQ','微信']
>>> b = []
>>> print(id(b))
51115016
>>> for i in a:
b.append(i)
>>> print(b)
['QQ', '微信']
>>> print(id(b))
51115016

extend()方法:将 B 列表元素添加到 A 列表。推荐使用, A.extend(B)

注:将一个列表的元素,添加到另外一个列表元素的尾部。添加元素前后,地址不变。

>>> c = [1,2,3]
>>> print(id(c))
51296456
>>> d = ['QQ', '微信']
>>> c.extend(d)
>>>> print(c,id(c))
[1, 2, 3, 'QQ', '微信'] 51296456

insert()方法

注:在列表指定位置插入元素。当涉及大量元素时,尽量避免使用。因为,会让插入位置后面的元素进行大面积移动,影响处理速度。类似这样的函数还有:remove、 pop、del。

>>> c = [1,2,3]
>>> c.insert(2,'qq') # insert(索引, 要插入的元素)
>>> c
[1, 2, 'qq', 3]

“+” 操作符扩展列表

注:因为存储地址前后发生改变,属于创建了新列表,增加了内存。不建议使用。

>>> a = [20,40]
>>> print(id(a))
51297096
>>> a = a + [50]
>>> print(a)
[20, 40, 50]
>>> print(id(a))
51296968

“*” 操作符扩展列表

注:不建议使用。(字符串、元组也可以用‘ 乘法扩展’ ,增加相同的元素)

>>> a = [1,2,3]
>>> print(id(a))
51297416
>>> b = a * 3
>>> print(b)
[1, 2, 3, 1, 2, 3, 1, 2, 3]
>>> print(id(b))
51225352

删除列表元素的4种方式

remove()方法:删除列表中首次出现的元素

注:若列表中,有重复元素,则删除列表中,首次出现的该元素。若删除元素不存在,则抛出异常。

>>> d = [1,2,5,2,3,4,5,1,3,2,1]
>>> d.remove(2)
>>> d
[1, 5, 2, 3, 4, 5, 1, 3, 2, 1]

del 方法

注:删除列表指定位置的元素。

>>> a = [1,2,3]
>>> del a[0]
>>> print(a)
[2, 3]
# 删除整个列表
>>> del a
>>> a
Traceback (most recent call last):
File "<pyshell#417>", line 1, in <module>
a
NameError: name 'a' is not defined

pop()方法:括号中传入的是索引

注:删除指定位置元素,并返回指定位置元素。若不指定位置,默认删除列表末 尾元素。推荐使用:不指定索引的用法。

>>> b = [1,2,3]
>>> b.pop(1)
2
>>> print(b)
[1, 3]
>>> c = ['a','b','c']
>>> c.pop()
'c'
>>> c.pop()
'b'
>>> c.pop()
'a'
>>> print(c)
[]
>>> c.pop()
Traceback (most recent call last):
File "<pyshell#13>", line 1, in <module>
c.pop()
IndexError: pop from empty list

clear()方法:删除列表中所有元素

>>> d = [1,2,5,2,3,4,5,1,3,2,1]
>>> d.clear()
>>> d
[]

获取列表元素的3种方式

关于这一小节,我们讲述2种获取列表元素的方法,1种获取列表元素位置的方法。

索引获取单个列表元素

注意:如果索引长度,超过列表长度,则会报错。记住下面这个错误,以后会经常遇到。

>> a = [1,2,3,4,5,6,7,8,9]
>>> a[4]
5 >
>> a[9]
Traceback (most recent call last):31
File "<pyshell#28>", line 1, in <module>
a[9]
IndexError: list index out of range

切片获取多个列表元素

>>> a = [1,2,3,4,5,6,7,8,9]
>>> a[3:]
[4, 5, 6, 7, 8, 9]
>>> a[2:6]
[3, 4, 5, 6]
>>> a[::-1]
[9, 8, 7, 6, 5, 4, 3, 2, 1]

index()方法:传入的是列表元素,获取指定元素所在位置的下标

语法:index(指定元素,start,end), start、 end 表示从哪个位置开始进行搜索,如果待搜索的元素不在搜索范围内,会报错。注意:传入列表元素,返回该元素的索引。

>>> b = [12,13,14,12,12,14,13,12,14,15]
>>> b.index(13)
1
>>> b.index(13,2)
6
>>> b.index(13,2,5)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: 13 is not in list

列表元素长度计算与计数

有时候我们需要统计某个列表的长度(列表中有几个元素),或者有时候需要对列表中的某个元素进行计数(数量统计)。

列表长度计算:len()

>>> b = [12,13,14,12,12,14,13,12,14,15]
>>> len(b)
10

列表元素计数:count()

注意:获取指定元素在列表中出现的次数

>>> a = [12,13,14,12,12,14,13,12,14,15]
>>> a.count(14)
3

python基础(五):列表的使用(上)的更多相关文章

  1. python基础(五)列表,元组,集合

    列表 在python中是由数个有序的元素组成的数据结构,每一个元素对应一个index索引来隐式标注元素在列表中的位置.是python中最常用的一种数据类型.需要注意的是列表中可以有重复相同的数据. 列 ...

  2. Python基础数据类型-列表(list)和元组(tuple)和集合(set)

    Python基础数据类型-列表(list)和元组(tuple)和集合(set) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本篇博客使用的是Python3.6版本,以及以后分享的 ...

  3. python基础数据类型--列表(list)

    python基础数据类型--列表(list) 列表是我们在后面经常用到的数据类型之一,通过列表可以对数据类型进行增.删.改.查等操作 一列表的增.删.改.查 1增: 1.1增加到最后   append ...

  4. python基础之列表list元组tuple

    作者:tongqingliu 转载请注明出处:http://www.cnblogs.com/liutongqing/p/7041763.html python基础之列表list元组tuple 列表li ...

  5. Day2 - Python基础2 列表、字典、集合

    Python之路,Day2 - Python基础2   本节内容 列表.元组操作 字符串操作 字典操作 集合操作 文件操作 字符编码与转码 1. 列表.元组操作 列表是我们最以后最常用的数据类型之一, ...

  6. python基础4 列表和元组

    一. 列表列表:python基础数据类型之一:其他语言中也有列表的概念,js 数组,可索引,可切片,可加步长li = ['hello', 100, True, [1, 2, 3], {'name':' ...

  7. python基础之列表、字典、元祖等 (二)

    一.作用域 if 1==1: name = 'weibinf' print name 下面的结论对吗? 外层变量,可以被内层变量使用 内层变量,无法被外层变量使用 二.三元运算 result = 值1 ...

  8. python基础之列表讲解

    列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现. 列表的数据项不需要具有相同的类型 如下图所示,创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可.(接下来的演 ...

  9. Python基础入门-列表解析式

    今天我们使用Python中的列表解析式来实现一些简单功能.好了关于列表解析式是什么?我的理解是它可以根据已有列表,高效创建新列表的方式.列表解析是Python迭代机制的一种应用,它常用于实现创建新的列 ...

  10. Python基础知识2-内置数据结构(上)

     分类 数值型 用浮点型的时候注意别和"=="一起使用. 数字的处理函数 注意round()函数的特殊:四舍六入五取偶 类型判断 列表list 列表list定义 初始化 列表索引访 ...

随机推荐

  1. H5 & animation

    H5 & animation https://m.tb.cn/h.VYB7BAx?sm=51fda6 UA checker webp image & css animation CDN ...

  2. Jupyter Notebook 暗色自定义主题

    这款主题是在jupyter-dark-theme的基础上修改了字体大小和行高,以及显示工具栏.感谢原作者! 安装 下载custom.css文件并移动至~/.jupyter/custom/文件夹下,如果 ...

  3. [计算机图形学]绘制填充模型:重心坐标、z-buffer

    目录 一.点乘和叉乘 0. 向量表示 1. 点乘 2.叉乘 2.1 坐标运算方式 2.2 向量运算方式 2.3 叉乘的用途 二.Bounding Box 三.重心坐标 四.z-buffer 五.总结 ...

  4. WPF -- 自定义按钮

    本文介绍WPF一种自定义按钮的方法. 实现效果 使用图片做按钮背景: 自定义鼠标进入时效果: 自定义按压效果: 自定义禁用效果 实现效果如下图所示: 实现步骤 创建CustomButton.cs,继承 ...

  5. 如何用Eggjs从零开始开发一个项目(1)

    前言 "纸上得来终觉浅,绝知此事要躬行."虽然node一直在断断续续地学,但总是东一榔头西一榔头的,没有一点系统,所以打算写一个项目来串联一下之前的学习成果. 为什么选择Eggjs ...

  6. 看完我的笔记不懂也会懂----MarkDown使用指南

    目录 语法 [TOC] 自动生成目录 1. 标题 2. 文本强调 3. 列表 4. 图片 5. 超链接 6. 文本引用 7. 分割线 8. 代码 9. 任务列表 (MPE专属) 10. 表格 11. ...

  7. 全局解决Vue跳转相同路由导致报错的问题

    大家使用Vue做开发的时候应该都遇到过这个问题,就是某个页面下调用this.$router.push(path),而path指向的页面和当前页面是同一页面时,就会发生报错,vue-router会提示你 ...

  8. 653. 两数之和 IV - 输入 BST + HashSet

    653. 两数之和 IV - 输入 BST 题目描述 题解分析 最简单的方法就是遍历整棵树,找出所有可能的组合,判断是否存在和为 kk 的一对节点.现在在此基础上做一些改进. 如果存在两个元素之和为 ...

  9. 剑指 Offer 63. 股票的最大利润 + 动态规划

    剑指 Offer 63. 股票的最大利润 Offer_63 题目描述 方法一:暴力法 package com.walegarrett.offer; /** * @Author WaleGarrett ...

  10. POJ-1062(原始dijiksra算法+思维)

    昂贵的婚礼 POJ-1062 这道题目一开始看的时候难以理解,但是仔细想,还是可以和最短路联系的,我觉得类似于硬币交换等问题. 以下需要注意几个点,第一就是因为题目规定如何和超出了等级限制的人交易,则 ...