我们在C语言中会使用数组来将一大堆数据类型一样的数据挨个摆在一起,但是数组有一个基本的要求,就是数据类型必须是一致的,我们知道Python的变量由于没有数据类型,也就是说Python没有数组这一概念,但是Python引入了更为强大的列表。

  基本概念

列表(list)是Python中内置可变序列,是一个有序的元素集合;

列表中的每一个数据称为元素,列表的所有元素放在一对中括号“[”和“]”中,并使用逗号分隔开;

列表元素可以通过索引访问单个元素。

在Python中,同一个列表中元素的数据类型可以各不相同,可以同时包含整数、实数、字符串等基本类型的元素,也可以包含列表、元组、字典、集合、函数以及其他任意对象。

Python采用基于值的自动内存管理模式,变量并不直接存储值,而是存储值的引用或内存地址,这也是python中变量可以随时改变类型的重要原因。同理,Python列表中的元素也是值的引用,所以列表中各元素可以是不同类型的数据。

如果只有一对方括号而没有任何元素则表示空列表。

列表大小没有限制,可以随时修改。 列表增加或删除元素时,列表对象自动进行内存的扩展或收缩,从而保证相邻元素之间没有缝隙。Python列表的这个内存自动管理功能可以大幅度减少程序员的负担,但插入和删除非尾部元素时涉及到列表中大量元素的移动,会严重影响效率。

访问列表中元素时采用索引形式 在非尾部位置插入和删除元素时会改变该位置后面的元素在列表中的索引,这对于某些操作可能会导致意外的错误结果。 除非确实有必要,否则应尽量从列表尾部进行元素的追加与删除操作。

创建与删除

1.如同其他类型的Python对象变量一样,使用“=”直接将一个列表赋值给变量即可创建列表对象。例如:

  a_list = ['a', 'b', 'mpilgrim', 'z', 'example']
a_list = []

2.也可以使用list()函数将元组、range对象、字符串或其他类型的可迭代对象类型的数据转换为列表。 例如:

  list((3,5,7,9,11))                #将元组转换为列表
list(range(1, 10, 2)) #将range对象转换为列表
list('hello world') #将字符串转换为列表
list({3,7,5}) #将集合转换为列表
list({'a':3, 'b':9, 'c':78}) #将字典的“键”转换为列表
list({'a':3, 'b':9, 'c':78}.items())#将字典的“键:值”对转

3.当不再使用时,使用del命令删除整个列表,如果列表对象所指向的值不再有其他对象指向,Python将同时删除该值。 例如:

  x = [1, 2, 3]
del x #删除列表对象
x #对象删除后无法再访问,抛出异常
NameError: name 'x' is not defined

      列表推导式

1.列表推导式可以说是Python程序开发时应用最多的技术之一。

以方括号[ ]作为开始和结束的标记。

[expr for value in collection ifcondition]

列表推导式使用非常简洁的方式来快速生成满足特定需求的列表,代码具有非常强的可读性。

 aList = [x*x for x in range(10)]

相当于

  aList = []
for x in range(10):
aList.append(x*x)

2.过滤不符合条件的元素

 aList = [-1,-4,6,7.5,-2.3,9,-11]
[i for i in aList if i>0]

[6, 7.5, 9]

在列表推导式中使用多个循环,实现多序列元素的任意组合,并且可以结合条件语句过滤特定元素

 [(x, y) for x in range(3) for y in range(3)]

[(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]

 [(x, y) for x in [1, 2, 3] for y in [3, 1, 4] if x != y]

[(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]

      列表操作

     1.针对列表有一些基本操作,这些操作与字符串操作类似

     

2.列表常用方法

1)append()、insert()、extend() append()用于向列表尾部追加一个元素,insert()用于向列表任意指定位置插入一个元素,extend()用于将另一个列表中的所有元素追加至当前列表的尾部。这3个方法都属于原地操作,不影响列表对象在内存中的起始地址。

 >>> x = [1, 2, 3]
>>> id(x) #查看对象的内存地址
50159368
>>> x.append(4) #在尾部追加元素
>>> x.insert(0, 0) #在指定位置插入元素
>>> x.extend([5, 6, 7]) #在尾部追加多个元素
>>> x
[0, 1, 2, 3, 4, 5, 6, 7]
>>> id(x) #列表在内存中的地址不变
50159368

2)pop()、remove()、clear() pop()用于删除并返回指定位置(默认最后一个)上的元素;remove()用于删除列表中第一个与指定值相等的元素;clear()用于清空列表中的所有元素。均属于原地操作。还可以使用del命令删除列表中指定位置的元素,同样属于原地操作。

 >>> x = [1, 2, 3, 4, 5, 6, 7]
>>> x.pop() #弹出并返回尾部元素
>>> x.pop(0) #弹出并返回指定位置的元素
>>> x.clear() #删除所有元素
>>> x
[]
>>> x = [1, 2, 1, 1, 2]
>>> x.remove(2) #删除首个值为2的元素
>>> del x[3] #删除指定位置上的元素

3)count()、index() count()用于返回列表中指定元素出现的次数;index()用于返回指定元素在列表中首次出现的位置,如果该元素不在列表中则抛出异常。

 >>> x = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
>>> x.count(3) #元素3在列表x中的出现次数
3
>>> x.count(5) #不存在,返回0
0
>>> x.index(2) #元素2在列表x中首次出现的索引
1
>>> x.index(5) #列表x中没有5,抛出异常
ValueError: 5 is not in list

4)sort()、reverse()

sort()方法用于按照指定的规则对所有元素进行排序;reverse()方法用于将列表所有元素逆序或翻转。

>>> x = list(range(11))    #包含11个整数的列表
>>> import random
>>> random.shuffle(x) #把列表x中的元素随机乱序
>>> x
[6, 0, 1, 7, 4, 3, 2, 8, 5, 10, 9]
>>> x.sort(key=lambda item:len(str(item)), reverse=True) #按转换成字符串以后的长度,降序排列
>>> x
[10, 6, 0, 1, 7, 4, 3, 2, 8, 5, 9]
>>> x.sort(key=str) #按转换为字符串后的大小,升序排序
>>> x.reverse() #翻转列表

       

       序列操作常用内置函数

        字符串拆分列表

对于字符串,可以通过split()函数,将字符串拆分成一个列表,默认以空格分割 例如:

Python—列表(一个“打了激素”的数组)的更多相关文章

  1. 列表:一个打了激素的数组3 - 零基础入门学习Python012

    列表:一个打了激素的数组3 让编程改变世界 Change the world by program 列表的一些常用操作符 比较操作符 逻辑操作符 连接操作符 重复操作符 成员关系操作符 ...... ...

  2. 列表:一个打了激素的数组 - 零基础入门学习Python010

    列表:一个打了激素的数组 让编程改变世界 Change the world by program 列表:一个打了激素的数组 有时候我们需要把一堆东西暂时存储起来,因为他们有某种直接或者间接的联系,我们 ...

  3. 列表:一个打了激素的数组2 - 零基础入门学习Python011

    列表:一个打了激素的数组2 让编程改变世界 Change the world by program 从列表中获取元素 跟数组一样,我们可以通过元素的索引值(index)从列表获取单个元素,注意,列表索 ...

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

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

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

    前言 这节课我们继续谈一下Python列表一些知识 知识点 Python常用操作符 比较操作符 >>> list1 = [123] >>> list2 = [234 ...

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

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

  7. 【零基础入门学习Python笔记012】一个打了激素的数组3

    列表的一些经常使用操作符 比較操作符 逻辑操作符 连接操作符 反复操作符 成员关系操作符 +表示两个连接.*表示复制. list中"+"两边的类型必须一致. 演示样例: water ...

  8. !!对python列表学习整理列表及数组详细介绍

    1.Python的数组分三种类型:(详细见 http://blog.sina.com.cn/s/blog_6b783cbd0100q2ba.html) (1) list 普通的链表,初始化后可以通过特 ...

  9. python 获取一个列表有多少连续列表

    python 获取一个列表有多少连续列表 例如 有列表 [1,2,3] 那么连续列表就是 [1,2],[2,3],[1,2,3] 程序实现如下: 运行结果:

随机推荐

  1. 【Hadoop故障处理】全分布下,DataNode进程正常启动,但是网页上不显示,并且DataNode节点为空

    [故障背景] DataNode进程正常启动,但是网页上不显示,并且DataNode节点为空. /etc/hosts   的ip和hostname配置正常,各个机器之间能够ping通. [日志错误信息] ...

  2. Windows常用命令,想要看什么命令直接在全文“CTRL+F”检索(转)

    原文地址:https://www.cnblogs.com/kekec/p/3662125.html 打开"运行"对话框(Win+R),输入cmd,打开控制台命令窗口... 也可以通 ...

  3. yii学习笔记(3),自定义全局工具函数

    在平时开发是经常需要打印数据来调试 常见的打印方式有print_r和var_dump,但是这样打印出来格式很乱不好浏览 在打印函数前后加上<pre></pre>就可以将内容原样 ...

  4. day30 进程

    推荐两本书:现代操作系统和操作系统原来,学习好python以后再去研究.   并发:任务的切换,保存状态,存在io的是实现空间和时间的 重复利用 操作系统的发展历史: 第一代(1940-1955)手工 ...

  5. A64 I2S调试

    通过A64 的I2S总线与回音消除模块连接,在A64中需要使能并配置daudio功能. Daudio 为A64 的数字音频接口,可配置成i2s/pcm格式标准音频接口. 内核配置在lichee/lin ...

  6. 『Python基础-11』集合 (set)

    # 『Python基础-11』集合 (set) 目录: 集合的基本知识 集合的创建 访问集合里的值 向集合set增加元素 移除集合中的元素 集合set的运算 1. 集合的基本知识 集合(set)是一个 ...

  7. C语言实例解析精粹学习笔记——19

    实例19:判断正整数n的d进制表示形式是否是回文数(顺着看和倒着看相同的数). 主要思路: 一种方法:将正整数n数转换成d进制的数,逐个比较首尾对应数字,判断是否为回文数. 另一种方法:将正整数n数转 ...

  8. python3 urllib爬取wallhalla网站图片

    点我去我的github上看源码 简单使用静态方法爬取https://wallhalla.com/网站的图片 参考: https://blog.csdn.net/cquptcmj/article/det ...

  9. 无限滚动HTML UL结构

    http://framework7.taobao.org/docs/infinite-scroll.html#.VUjA7NOqqko

  10. Java设计模式(6)——创建型模式之原型模式(Prototype)

    一.概述 概念 // 引用自<Java与模式> UML图 第二种:登记式 二.实践 先导知识 对象的拷贝: 直接赋值:此时只是相当于a1,a2指向同一个对象,无论哪一个操作的都是同一个对象 ...