概念

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

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

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

定义

基本定义

定义方法:[ 元素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. numpy特性

    numpy特性 待办 可获取最小值最大值或者排序等操作的索引,然后通过索引取得对应值或者对应值的序列 按行按列求和.按行按列求积 方差等等统计函数使用 enter description here e ...

  2. 关于python 的 __future__

    经常看到__future__: from __future__ import absolute_importfrom __future__ import print_functionfrom __fu ...

  3. DVWA全级别之XSS(Reflected)、XSS(Stored)【跨站脚本攻击】

    XSS XSS,全称Cross Site Scripting,即跨站脚本攻击,某种意义上也是一种注入攻击,是指攻击者在页面中注入恶意的脚本代码,当受害者访问该页面时,恶意代码会在其浏览器上执行,需要强 ...

  4. 【PAT甲级】1113 Integer Set Partition (25分)

    题意: 输入一个正整数N(2<=N<=1e5),接着输入N个正整数,将这些数字划分为两个不相交的集合,使得他们的元素个数差绝对值最小且元素和差绝对值最大. AAAAAccepted cod ...

  5. dbGet

    dbGet是Innovus/Encounter DBTCL命令的一种.除了dbGet,DBTCL的命令还包括以下几种: 1. dbSet 2. setDbGetMode/getDbGetMode 3. ...

  6. mutiprocessing 同步类型,如锁,条件和队列官方案例:

    官方文档:https://docs.python.org/2/library/multiprocessing.html#module-multiprocessing 1. 同步类型,如锁,条件和队列官 ...

  7. JavaScript arguments对象浅析

    arguments对象 概念 用法 属性 arguments对象 概念 arguments 是一个类数组对象.代表传给一个function的参数列表. 用法 function a() { consol ...

  8. git之路

    1.如何clone代码到本地 答:git clone https://github.com/antirez/redis.git 2.

  9. CLR处理损坏状态的异常

    你有没有写过不太正确但足够接近的代码?当一切顺利的时候,你是否不得不编写运行良好的代码,但是你不太确定当出了问题时会发生什么?有一个简单的.不正确的语句可能位于您编写或必须维护的代码中:catch ( ...

  10. Docker - 周边 - Go Template

    概述 docker inspect -f 引出 希望学会后, 可以处理这个命令 问题: 这是啥 疑问 最开始, 我以为是 jsonpath 后来看 命令行的解释, 说叫 go template 但是我 ...