Python—列表

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

  基本概念

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

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

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

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

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

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

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

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

创建与删除

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

1  a_list = [‘a‘, ‘b‘, ‘mpilgrim‘, ‘z‘, ‘example‘]
2  a_list = []           

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

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

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

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

      列表推导式

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

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

[expr for value in collection ifcondition]

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

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

相当于

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

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

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

[6, 7.5, 9]

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

1 [(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)]

1 [(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个方法都属于原地操作,不影响列表对象在内存中的起始地址。

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

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

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

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

1 >>> x = [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
2 >>> x.count(3)                     #元素3在列表x中的出现次数
3 3
4 >>> x.count(5)                     #不存在,返回0
5 0
6 >>> x.index(2)                     #元素2在列表x中首次出现的索引
7 1
8 >>> x.index(5)                     #列表x中没有5,抛出异常
9 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()函数,将字符串拆分成一个列表,默认以空格分割 例如:

原文地址:https://www.cnblogs.com/wkfvawl/p/9005035.html

时间: 2024-08-01 20:52:38

Python—列表的相关文章

python列表和QVariant

pyqt中,要给QAbstractTableModel的setData函数传递一个list参数: [20,'00:00:19'] 涉及到QVariant和list的转换. 可以使用QVariant类中的toPyObject是转换. 环境是:Python 2.7.6 pyqt4 4.8.6 有文章说是,toPyObject只能转换字符串,而且只能转换字典. 测试一下,支持数字,支持字典和列表. #coding:utf-8 from PyQt4.QtCore import QVariant a={2

Python列表的增删改查排

Python列表的增删改查排 一.列表的样子: a = ['q' , 'w' , 'e ', 'r','t'] a为列表名,[ ]为列表内容,' '为列表内的元素,'q'为a[0] 二.查(也称切片): print ( a[0] )          #取出列表中第一个元素 即:q print ( a[1:] )        #从第二个元素开始取到最后 即:['w', 'e','r', 't'] print ( a[1:3] )        #取出从第二个开始到第三个元素 即:['w','e

python列表和元组的方法和属性

python序列的共性 python序列包括列表和元组,序列都有索引,第一个元素索引为0,序列都可以进行索引.加.乘.切片.检查成员. python列表 列表是最常用的数据类型之一,通过[,,,]建立,可以给变量赋值空列表[].列表的数据项可以是不同类型的,可以嵌套. 列表的索引和字符串操作一样,同样可以截取例如a[1:2] / a[1:] / a[:3] 列表的更新: 1.修改:通过索引直接赋值来修改列表中的值. 2.新增:通过list.append(),在末尾处添加元素. 3.删除: A.通

[转载] Python 列表(list)、字典(dict)、字符串(string)常用基本操作小结

创建列表 sample_list = ['a',1,('a','b')] Python 列表操作 sample_list = ['a','b',0,1,3] 得到列表中的某一个值 value_start = sample_list[0] end_value = sample_list[-1] 删除列表的第一个值 del sample_list[0] 在列表中插入一个值 sample_list[0:0] = ['sample value'] 得到列表的长度 list_length = len(sa

python 列表推导

python 列表推导 python List Comprehensions List Comprehensions List comprehensions are an elegant way to build a list without having to use different for loops to append values one by one. 最简单形式 [ expression-involving-loop-variable for loop-variable in s

Python 列表(list)操作

创建列表 sample_list = ['a',1,('a','b')] Python 列表操作 sample_list = ['a','b',0,1,3] 得到列表中的某一个值 value_start = sample_list[0] end_value = sample_list[-1] 删除列表的第一个值 del sample_list[0] 在列表中插入一个值 sample_list[0:0] = ['sample value'] 得到列表的长度 list_length = len(sa

python 列表推导式----轻量级循环

列表推导式(list comprehension)是利用其他列表创建新列表(类似于数学术语中的集合推导式)的一种方法.它的工作方式类似于for循环,也很简单: In [39]: [x*x for x in range(10)]Out[39]: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] 如果只想打印出那些能被3整除的平方数,只需要通过添加一个if部分在推导式中就可以完成: In [41]: [x*x for x in xrange(10) if x % 3 == 0

Python列表、元组、字典和字符串的常用函数

Python列表.元组.字典和字符串的常用函数 列表方法 1.ls.extend(object) 向列表ls中插入object中的每个元素,object可以是字符串,元组和列表(字符串“abc”中包含3个元组),相当于ls和object合并.注意:object如果是整型,必须以列表的方式传入,不可以以整型或元组的方式传入 2.ls.append(object) 将object作为一个整体插入到ls最后,object可以是字符串,元组,列表和字典 3.ls.insert(index, object

Python 列表(Lists)

Python 列表(Lists) 序列是Python中最基本的数据结构.序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推. Python有6个序列的内置类型,但最常见的是列表和元组. 序列都可以进行的操作包括索引,切片,加,乘,检查成员. 此外,Python已经内置确定序列的长度以及确定最大和最小的元素的方法. 列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现. 列表的数据项不需要具有相同的类型 创建一个列表,只要把逗号分隔

Python 列表(list)、字典(dict)、字符串(string)常用基本操作小结

[python] view plaincopy 创建列表 sample_list = ['a',1,('a','b')] Python 列表操作 sample_list = ['a','b',0,1,3] 得到列表中的某一个值 value_start = sample_list[0] end_value = sample_list[-1] 删除列表的第一个值 del sample_list[0] 在列表中插入一个值 sample_list[0:0] = ['sample value'] 得到列表