概念

列表:有序的,可变的,元素集合

因为列表和字符串都是序列类型,所以很多操作和字符串很相似

但是注意:列表是可变类型,字符串是不可变类型

定义

基本定义

定义方法:[ 元素1, 元素2, ...... ]

列表中的元素是任意的,写什么都可以,也可以是另一个列表

可以定义一个空列表:[]

列表生成式

range(stop):生成 [0, 1, 2, ...., stop-1]

range(start, stop[, step]):生成 [start, start+step, start+2*step, ...... ] ,元素都小于stop

在python2中,range直接返回一个列表,而在python3中,range是一个生成器

使用生成器的原因:为了防止生成的列表会很大,而且可能不会被立即使用

列表推导式

[表达式 for x in xxx]

[表达式 for x in xxx if 条件]

[表达式 for x in xxx for y in yyy]

......

列表常用操作

增加

append

向列表中,追加一个新的元素,在列表的最后

语法:l.append(x)

会直接修改原列表,返回值为None

insert

在列表指定位置追加一个新的元素

在指定索引的前面

语法:l.insert(index, obj)

会直接修改原列表

extend

给列表扩展另外一个可迭代序列

语法:l.extend(iterable)

会直接修改原列表

乘法操作

l * n:列表l,内容重复n次

不修改原列表

加法操作

l1 + l2:组合l1和l2

不修改原列表

删除

del 语句

del 语句可以删除一个指定的元素

(del不止可以用于列表,也可以用于普通变量)

del可以删除整个列表,也可以删除某个元素

pop

移除并返回列表中指定索引对应元素

语法:l.pop(index=-1)

返回被移除的元素

remove

移除列表中的指定元素

语法:l.remove(obj)

参数 obj:需要被移除的元素

注意:

  • 会直接修改原列表
  • 如果元素不存在,会报错
  • 如果存在多个元素,则只会删除最左边的一个
  • 注意,在循环中删除列表元素,有时候会有坑

修改

l[index] = xxx

查找

索引

l[index]

获取元素索引

l.index(obj)

从左到右进行查找

获取指定元素个数

l.count(obj)

获取多个元素,切片

见字符串操作方法,注意列表是可变的

遍历

通过元素进行遍历

for x in l:
......

通过索引进行遍历

for index in range(len(l) + 1):
......

通过枚举进行遍历

枚举对象:通过枚举函数,生成一个新的对象

函数用于将一个可遍历的对象,组合为一个索引序列,同时列出数据下标和数据

语法:enumerate(sequence, [start=0])

  • sequence:一个序列,迭代器,或者其他支持迭代的对象
  • start:起始位置下标

返回的形式:[(0, obj0), (1, obj1), ......]

for t in enumerate(l):
......

也可以使用元组的解包

for idx, obj in enumerate(l):
......

通过迭代器进行遍历

简单了解一下迭代器!

什么是迭代:访问可迭代元素的一种方式,也就是可以按照顺序访问每一项

可迭代对象:能够被迭代的对象称为可迭代对象

判断依据:能作用域for in

判定方法:

import collections
isinstance(obj, collections.Iterable)

迭代器:

  • 是可以记录遍历位置的对象
  • 从第一个元素开始,往后通过next()函数进行遍历
  • 只能往后,不能向前
  • 判定依据:能作用于next函数,next(obj)
  • 判定方法:
    • import collections
    • isinstance(obj, collections.Iterator)
  • 注意:迭代器也是可迭代对象,所以也可以作用于for in

iter:根据一个可迭代对象返回一个迭代器

为什么会产生迭代器

  1. 仅仅在迭代到某个元素时才处理该元素
  • 在此之前,元素可以不存在
  • 在此之后,元素可以被销毁
  • 特别适合用于遍历一些巨大的或者是无限的集合
  1. 提供了一个统一的访问集合的接口
  • 可以把所有的可迭代对象,转换成迭代器进行使用

迭代器的简单使用

  • 使用next()函数,从迭代器中取出下一个对象,从第一个元素开始
  • 因为迭代器比较常用,所以在python中,可以直接作用于 for in
    • 内部会自动调用迭代器对象,next
    • 会自动处理迭代完毕的错误

注意

  • 如果取出完毕,再继续取,则会报错:StopIteration
  • 迭代器一般不能多次迭代

判定

列表也是序列类型

in 和 not in,同样可以用于列表

用来判断元素是否存在于列表之中

比较

内建函数:cmp()

如果比较的是列表,则针对每个元素,从左到右逐一比较

  • 左 > 右 1
  • 左 == 右 0
  • 左 < 右 -1

在python3中不支持这种方式


比较运算符

== < >。。。。。

针对每个元素,从左到右逐一比较

排序

内建函数:sort()

可以对所有可迭代对象进行排序

语法:sorted(iterable, key=None,reverse=False)

参数:

  • iterable:可迭代对象
  • key:排序关键字,值为一个函数,此函数只有一个参数且返回一个值
  • reverse:控制升序降序,默认False,升序

返回值:一个已经排好序的 列表

列表方法 list.sort

语法:list.sort(key=None, reverse=False)

参数:

  • key:排序关键字,值为一个函数,此函数只有一个参数并且返回一个值用来比较
  • reverse:控制升序降序,默认False,升序

乱序

随机打乱一个列表

import random
...
random.shuffle(l)

反转

l.reverse()

l[::-1]

Python:列表类型的更多相关文章

  1. Python列表类型及常用操作

    Python列表类型 1.用途: 存放多个值,可以根据索引存取值 2.定义方式: 在[ ]内用逗号分割开多个任意类型的值 l=['yven','law','lyf'] #l=list(['yven', ...

  2. python列表类型

    列表类型简介 列表类型是一个容器,它里面可以存放任意数量.任意类型的数据. 例如下面的几个列表中,有存储数值的.字符串的.内嵌列表的.不仅如此,还可以存储其他任意类型. >>> L ...

  3. python列表类型中的陷阱

    在python中对列表使用重复运算符*进行操作时,只是简单的进行了浅复制,内部的结构并没有复制过来,所以下面的例子结果是这样的: >>> lists =[[]]*3 >> ...

  4. python容器类型:列表,字典,集合等

    容器的概念我是从C++的STL中学到的 什么是容器? 容器是用来存储和组织其他对象的对象. 也就是说容器里面可以放很多东西,这些东西可以是字符串,可以是整数,可以是自定义类型,然后把这些东西有组织的存 ...

  5. Python变量类型(l整型,长整形,浮点型,复数,列表,元组,字典)学习

    #coding=utf-8 __author__ = 'Administrator' #Python变量类型 #Python数字,python支持四种不同的数据类型 int整型 long长整型 flo ...

  6. Python基础(3) - 数据类型:3列表类型

    Python 列表是序列对象,可包含任意的Python数据信息,如字符串.数字.列表.元组等.列表的数据是可变的,我们可通过对象方法对列表中的数据进行增加.修改.删除等操作.列表用[]包括起来的. 列 ...

  7. python全栈开发_day5_字符串及列表类型

    一:字符串 1)优先掌握知识点. a=" 21j3:b12jk:b3j12:3bjk12 " #内置方法之strip print(a.strip(" ")) # ...

  8. python基础——4(数字、字符串、列表类型的内置方法介绍)

    目录 一.可变与不可变类型 二.数字类型 三.字符串类型 四.列表类型 一.可变与不可变类型 可变类型:值改变,但是id不变,证明就是在改变原值,是可变类型 不可变类型:值改变,id也跟着改变,证明产 ...

  9. 005 python 整数类型/字符串类型/列表类型/可变/不可变

    可变/不可变类型 可变类型 ID不变的情况下,值改变,则称之为可变类型,如列表,字典 不可变类型 值改变,ID改变,则称之为不可变类型,如 整数 字符串,元组 整数类型 int 正整数 用途就是记录年 ...

  10. Python 变量类型

    Python 变量类型 变量存储在内存中的值.这就意味着在创建变量时会在内存中开辟一个空间. 基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中. 因此,变量可以指定不同的数据 ...

随机推荐

  1. CI框架Email类发送邮件提示Unable to send data: . The following SMTP error was encountered: Unable to .......

    最近服务器迁移,然后CI框架做的项目发邮件全挂掉了,刚开始是25端口没开,然后开了正好还是有问题, 1.打印请求信息和返回信息 echo $this->email->print_debug ...

  2. 开发笔记-记一个基础logback配置

    <?xml version="1.0" encoding="UTF-8"?> <configuration scan="true&q ...

  3. ieee-explore文献免费下载办法

    假设文献网址为:http://ieeexplore.ieee.org/document/xxxxxxx/ 下载保存的话,改为http://ieeexplore.ieee.org.sci-hub.tw/ ...

  4. NOIP做题练习(day4)

    A - 同花顺 题面 题解 30分做法 爆搜即可. 60分做法 去重+贪心. 100分做法 去重+贪心后,我们要寻找一段符合条件的最长同花上升子序列 \(L\),\(n-L\) 即为所求的答案. 首先 ...

  5. [POI2011]ROT-Tree Rotations 线段树合并|主席树 / 逆序对

    题目[POI2011]ROT-Tree Rotations [Description] 现在有一棵二叉树,所有非叶子节点都有两个孩子.在每个叶子节点上有一个权值(有\(n\)个叶子节点,满足这些权值为 ...

  6. (c#)拼写单词

    题目 解

  7. DB技能数据库里把技能伤害调整

    1. MagID 技能代号 2. MagName 技能名称 3. Effect Type 效果类型(使用技能时角色的动作效果) 4. Effect 效果(技能产生的动画效果) 5. Spell 每次耗 ...

  8. map-apply-applymap

    In [1]: import warnings import math import pandas as pd import numpy as np import matplotlib warning ...

  9. bodyParser.urlencoded({ })里extended: true和false区别???

  10. java基础(温故而知新)

    一 数据类型 1.1 8种基本数据类型 1.2 引用数据类型 1.3 java内存机制 1.3.1 寄存器 1.3.2 栈 1.3.3 堆 1.3.4. 静态区/方法区 1.3.5. 运行时常量池(R ...