列表和字段都可以在原处进行修改,可以按照需求增长或缩短,并且可以包含任何类型的对象或被嵌套。列表和字典存储的是对象的引用,而不是拷贝。

一,列表

列表是有序的序列,每一个列表项的顺序是固定的,这使得列表可以通过指定的偏移来索引和分片。列表是可变的序列,支持在原处修改。

列表项可以是任何类型,或对象,也可以嵌套列表。

1,列表的创建

创建一个空的列表:

>>> l=[]

创建一个纯数字列表:

>>> l=[1,2,3]

创建一个数字和字符的混合类型列表:

>>> l=[1,2,'a']

创建一个嵌套对象的列表:

>>> l=[1,'a',[2,'b']]
>>> l
[1, 'a', [2, 'b']]

创建一个范围列表:

range() 函数用于创建一个整数列表,range函数语法:

range(start, stop[, step])

参数说明:

  • start: 计数从 start 开始,默认是从 0 开始。例如range(5)等价于range(0, 5);
  • stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
  • step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)

使用range函数创建一个范围列表:

>>> list(range(1,10,2))
[1, 3, 5, 7, 9]

2,列表解析

使用列表解析,可以使用迭代器来生成列表:

>>> l=[x**2 for x in range(0,5)]
>>> l
[0, 1, 4, 9, 16]

3,列表的索引和分片

列表和字符串都是有序的序列,它们的索引和分片的格式很相似:

  • l[i]:索引单个列表项
  • l[i][j]:如果列表项是序列,那么可以使用多重索引
  • l[i:j]:对列表分片

例如:对列表进行索引和分片

>>> l=[1,'a',[2,'b']]
>>> l[1]
'a'
>>> l[2]
[2, 'b']
>>> l[2][1]
'b'
>>> l[0:2]
[1, 'a']

二,列表操作

列表的长度是固定的,不能越界访问列表,列表的最大索引是列表长度-1,越界会导致Python报错。

1,追加

向列表的末尾追加一个列表项: list.append(obj)

>>> l.append(4)
[1, 'a', [2, 'b'], 4]

向列表的末尾追加一个序列: list.extend(seq)

>>> l.extend([3,5])
[1, 'a', [2, 'b'], 4, 3, 5]

2,插入

向列表的特定位置插入一个列表项:list.insert(index,obj)

>>> l.insert(2,'b')
[1, 'a', 'b', [2, 'b'], 4, 3, 5]

3,移除列表项

根据索引来删除列表中的元素,list.pop(index=-1),返回的是删除的列表项:

>>> l.pop(2)
'b'
>>> l
[1, 'a', [2, 'b'], 4, 3, 5]

根据索引来删除列表项,可以使用 del 命令来删除指定索引的列表项: del list[index]

>>> del l[5]
[1, 'a', [2, 'b'], 4, 3]

根据元素值来删除列表的元素,可以使用 list.remove(obj)函数, 从列表中删除值是obj的元素:

>>> l.remove(3)

4,修改列表项

由于列表是可变的,支持原处修改列表项,也就是说,可以通过索引直接修改列表对象。

>>> l[4]=l[4]+2
>>> l
[1, 'a', [2, 'b'], 4, 5]

5,对列表进行排序:list.sort()

当列表项具有可比性时,可以对列表进行排序,list.sort(reverse=False),

  • reverse -- 排序规则,reverse = True 降序, reverse = False 升序(默认)。
>>> sl=['a','c','e','d']
>>> sl.sort()
>>> sl
['a', 'c', 'd', 'e']

6,查看某一元素的索引 list.index(obj)

从列表中找出某个值第一个匹配项的索引位置

>>> l.index(5)
4

7,列表的其他操作

  • 统计列表元素的数量:len(list)
  • 列表的合并:list1+list2,生成新的列表
  • 列表的重复:list*2,等价于 list+list,生成新的列表
  • 列表的迭代: obj in list

+和* 会生成新的列表,而list.append(),list.sort(),list.xxx()等函数和del list[i]是在原处修改,不会生成新的列表。

参考文档:

Python 学习 第三篇:数组类型(列表、字典和元组)的更多相关文章

  1. Python 学习 第16篇:数据类型(字典和Json)

    字典是键/值对构成的集合,字典通过大括号来创建,字典的键是字符串,而值可以是任何数据对象. 字典有两个重要的特征: 字典是无序的,字典项没有特定的顺序,只能通过键来获取值: 字典是可变的,支持原处修改 ...

  2. Python学习第三篇——访问列表部分元素

    dongman =["huoying","sishen","si wang bi ji","pan ni de lu lu xiu ...

  3. python学习Day8 三种字符类型、文件操作

    复习 类型转换 1.数字类型:int() | bool() | float() 2.str与int:int('10') | int('-10') | int('0') | float('-.5') | ...

  4. python学习第三天 --布尔类型

    我们已经了解了Python支持布尔类型的数据,布尔类型只有True和False两种值,但是布尔类型有以下几种运算: 与运算:只有两个布尔值都为 True 时,计算结果才为 True. True and ...

  5. Python学习笔记三,数组list和tuple

    list也就是列表的意思,可以存储一组数据集合,比如classmates=['zhangsan','lisi','123']每个数据用单引号包裹,逗号隔开.

  6. Python学习第三篇——逻辑判定

    request_foods=["tomato","beaf","milk"] for elements in request_foods: ...

  7. python学习(三)数字类型示例

    奶奶的报了这个错,我以为可以像java中字符串加数字的嘛 Traceback (most recent call last):   File "./number.py", line ...

  8. Python学习笔记基础篇——总览

    Python初识与简介[开篇] Python学习笔记——基础篇[第一周]——变量与赋值.用户交互.条件判断.循环控制.数据类型.文本操作 Python学习笔记——基础篇[第二周]——解释器.字符串.列 ...

  9. python学习第三次记录

    python学习第三次记录 python中常用的数据类型: 整数(int) ,字符串(str),布尔值(bool),列表(list),元组(tuple),字典(dict),集合(set). int.数 ...

随机推荐

  1. 2.Hibernate的主配置文件hibernate.cfg.xml

    1.配置 Hibernate 需要事先知道在哪里找到映射信息,这些映射信息定义了 Java 类怎样关联到数据库表.Hibernate 也需要一套相关数据库和其它相关参数的配置设置.所有这些信息通常是作 ...

  2. 正则捕获url的?号传值

    http://www.baidu.com/Q?k=0012719021908563998510650 有时候,我们需要在静态页面捕获?号传值,这时就需要用到js的正则表达式. 例如:我们要获取上面这个 ...

  3. windows下搭建Consul分布式系统和集群

    随着大数据时代的到来,分布式是解决大数据问题的一个主要手段,随着越来越多的分布式的服务,如何在分布式的系统中对这些服务做协调变成了一个很棘手的问题.我们在一个项目上注册了很多服务,在进行运维时,需要时 ...

  4. pt-heartbeat工具监控MySQL复制延迟

    pt-heartbeat工作原理: 1,在主库上的某个数据库A中创建一张heartbeat表,按照一定的时间频率更新该表的字段(把时间更新进去). 2,从主库连接到从上的这个数据库A中检查复制的时间记 ...

  5. redis 配置文件示例

    # redis 配置文件示例 # 当你需要为某个配置项指定内存大小的时候,必须要带上单位,# 通常的格式就是 1k 5gb 4m 等酱紫:## 1k  => 1000 bytes# 1kb =& ...

  6. Alpha冲刺报告(2/12)(麻瓜制造者)

    今日任务总结 燃尽图如下: 具体完成情况如下: 江郑: 今天:完成了商品需求的数据库的基本构建. 遇到的问题:对于php的ci框架不熟,操作原理不懂 明天:和队友进行数据库的对接 符天愉: 今天:完成 ...

  7. spark任务调度和资源分配

    Spark调度模式 FIFO和FAIR     Spark中的调度模式主要有两种:FIFO和FAIR.    默认情况下Spark的调度模式是FIFO(先进先出),谁先提交谁先执行,后面的任务需要等待 ...

  8. PyQt5--Signal&Slot

    # -*- coding:utf-8 -*- ''' Created on Sep 14, 2018 @author: SaShuangYiBing ''' import sys from PyQt5 ...

  9. saltstack二次开发(一)

    Saltstack简介 Salt是一个配置管理系统,能够维护预定义状态的远程节点(比如,确保指定的包被安装,指定的服务在运行),一个分布式远程执行系统,用来在远程节点(可以是单个节点,也可以是任意规则 ...

  10. Arcgis for Js之加载wms服务

    概述:本节讲述Arcgis for Js加载ArcgisServer和GeoServer发布的wms服务. 1.定义resourceInfo var resourceInfo = { extent: ...