list列表 - 图1

1. 格式

Python 中没有数组,但是加入了更加强大的列表。如果把数组看做是一个集装箱,那么 Python 的列表就是一个工厂的仓库。

从形式上看,列表会将所有元素都放在一对中括号[ ]里面,相邻元素之间用逗号,分隔,如下所示:
[element1, element2, element3, …, elementn]
格式中,element1 ~ elementn 表示列表中的元素,个数没有限制,只要是 Python 支持的数据类型就可以。

从内容上看,列表可以存储整数、小数、字符串、列表、元组等任何类型的数据,并且同一个列表中元素的类型也可以不同。比如说:[“http://c.biancheng.net/python/“, 1, [2,3,4] , 3.0]
可以看到,列表中同时包含字符串、整数、列表、浮点数这些数据类型。

注意,在使用列表时,虽然可以将不同类型的数据放入到同一个列表中,但通常情况下不这么做,同一列表中只放入同一类型的数据,这样可以提高程序的可读性。

2. 创建

在 Python 中,创建列表的方法可分为两种,下面分别进行介绍。

方法一

使用[ ]创建列表后,一般使用=将它赋值给某个变量,具体格式如下:
listname = [element1 , element2 , element3 , … , elementn]
其中,listname 表示变量名,element1 ~ elementn 表示列表元素。

方法二

除了使用[ ]创建列表外,Python 还提供了一个内置的函数 list(),使用它可以将其它数据类型转换为列表类型。

  1. #将字符串转换成列表
  2. list1 = list("hello")
  3. print(list1)
  4. #将元组转换成列表
  5. tuple1 = ('Python', 'Java', 'C++', 'JavaScript')
  6. list2 = list(tuple1)
  7. print(list2)
  8. #将字典转换成列表
  9. dict1 = {'a':100, 'b':42, 'c':9}
  10. list3 = list(dict1)
  11. print(list3)
  12. #将区间转换成列表
  13. range1 = range(1, 6)
  14. list4 = list(range1)
  15. print(list4)
  16. #创建空列表
  17. print(list())
  1. ['h', 'e', 'l', 'l', 'o']
  2. ['Python', 'Java', 'C++', 'JavaScript']
  3. ['a', 'b', 'c']
  4. [1, 2, 3, 4, 5]
  5. []

在使用list()将字符串转化为列表时,是将字符串中的字符一个一个的插入到列表中

3. 访问列表元素

列表是 Python 序列的一种,我们可以使用索引(Index)访问列表中的某个元素(得到的是一个元素的值),也可以使用切片访问列表中的一组元素(得到的是一个新的子列表)。
使用索引访问列表元素的格式为:
listname[i]

listname 表示列表名字,i 表示索引值。列表的索引可以是正数,也可以是负数。

listname[start:end:step]

  1. url = list("http://c.biancheng.net/shell/")
  2. #使用索引访问列表中的某个元素
  3. print(url[3]) #使用正数索引
  4. print(url[-4]) #使用负数索引
  5. #使用切片访问列表中的一组元素
  6. print(url[9: 18]) #使用正数切片
  7. print(url[9: 18: 3]) #指定步长
  8. print(url[-6: -1]) #使用负数切片

4. 遍历列表

4.1 直接使用for循环实现

  1. for item in listname:
  2. # 输出item

4.2 直接使用for循环实现

  1. for index,item in enumerate(listname):
  2. # 输出index和item
  • index:用于保存元素的索引
  • item:保存获得到的元素值,要输出元素内容时,直接输出该变量即可
  • listname:列表名 ```python lists = [‘a’,’b’,’c’,’d’] for index,item in enumerate(lists) print(index,item)

0 a 1 b 2 c 3 d

  1. <a name="tPdDc"></a>
  2. ## 5. 列表元素操作
  3. 列表元素操作有添加,删除,修改,查找操作
  4. <a name="wYBnX"></a>
  5. ### 5.1 添加元素
  6. ![](https://cdn.nlark.com/yuque/0/2022/jpeg/12372066/1650876838015-5f9d161b-1cb5-43d8-9b64-e9191f4bfd41.jpeg)
  7. <a name="dRTCz"></a>
  8. #### 1. “+”拼接起来
  9. 由于列表也是一种序列,可以使用序列中的添加方法:将两种相同类型的数据通过“+”拼接起来
  10. <a name="ZYo3w"></a>
  11. #### 2. append()方法添加元素
  12. append() 方法用于在列表的末尾追加元素,该方法的语法格式如下:<br />listname.append(obj)
  13. > listname 表示要添加元素的列表;obj 表示到添加到列表末尾的数据,它可以是单个元素,也可以是列表、元组等。
  14. > 当给 append() 方法传递列表或者元组时,此方法会将它们视为一个整体,作为一个元素添加到列表中,从而形成包含列表和元组的新列表。
  15. ```python
  16. l = ['Python', 'C++', 'Java']
  17. #追加元素
  18. l.append('PHP')
  19. print(l)
  20. #追加元组,整个元组被当成一个元素
  21. t = ('JavaScript', 'C#', 'Go')
  22. l.append(t)
  23. print(l)
  24. #追加列表,整个列表也被当成一个元素
  25. l.append(['Ruby', 'SQL'])
  26. print(l)
  27. ————————结果显示——————————
  28. ['Python', 'C++', 'Java', 'PHP']
  29. ['Python', 'C++', 'Java', 'PHP', ('JavaScript', 'C#', 'Go')]
  30. ['Python', 'C++', 'Java', 'PHP', ('JavaScript', 'C#', 'Go'), ['Ruby', 'SQL']]

3. extend()方法添加元素

extend() 和 append() 的不同之处在于:extend() 不会把列表或者元祖视为一个整体,而是把它们包含的元素逐个添加到列表中。

4. insert()方法插入元素

append() 和 extend() 方法只能在列表末尾插入元素,如果希望在列表中间某个位置插入元素,那么可以使用 insert() 方法。
listname.insert(index , obj)

index 表示指定位置的索引值。insert() 会将 obj 插入到 listname 列表第 index 个元素的位置。 当插入列表或者元祖时,insert() 也会将它们视为一个整体,作为一个元素插入到列表中,这一点和 append() 是一样的。

5.2 删除元素

list列表 - 图2

5.3 修改元素

Python提供了两种修改列表(list)元素的方法,你可以每次修改单个元素,也可以每次修改一组元素(多个)。

4.3.1 修改单个元素

修改单个元素非常简单,直接对元素赋值即可。

  1. nums = [40, 36, 89, 2, 36, 100, 7]
  2. nums[2] = -26 #使用正数索引
  3. nums[-3] = -66.2 #使用负数索引
  4. print(nums)
  5. >>>[40, 36, -26, 2, -66.2, 100, 7]

4.3.2 修改一组元素

Python 支持通过切片语法给一组元素赋值。在进行这种操作时,如果不指定步长(step 参数),Python 就不要求新赋值的元素个数与原来的元素个数相同;这意味,该操作既可以为列表添加元素,也可以为列表删除元素。

  1. nums = [40, 36, 89, 2, 36, 100, 7]
  2. #修改第 1~4 个元素的值(不包括第4个元素)
  3. nums[1: 4] = [45.25, -77, -52.5]
  4. print(nums)
  5. >>>[40, 45.25, -77, -52.5, 36, 100, 7]

注意事项

  1. 1. 使用切片语法赋值时,Python 不支持单个值,例如下面的写法就是错误的:
  2. nums[4: 4] = -77
  3. 2. 如果使用字符串赋值,Python 会自动把字符串转换成序列,其中的每个字符都是一个元素,
  4. s = list("Hello")
  5. s[2:4] = "XYZ"
  6. print(s)
  7. >>> ['H', 'e', 'X', 'Y', 'Z', 'o']

5.4 查找元素

Python列表(list)提供了 index() 和 count() 方法,它们都可以用来查找元素。

5.4.1 index()方法

index() 方法用来查找某个元素在列表中出现的位置(也就是索引),如果存在,index() 方法会返回元素所在列表中的索引值。如果该元素不存在,则会导致 ValueError 错误
index() 的语法格式为:
listname.index(obj, start, end)

listname 表示列表名称,obj 表示要查找的元素,start 表示起始位置,end 表示结束位置。

start 和 end 参数用来指定检索范围:

  • start 和 end 可以都不写,此时会检索整个列表;
  • 如果只写 start 不写 end,那么表示检索从 start 到末尾的元素;
  • 如果 start 和 end 都写,那么表示检索 start 和 end 之间的元素。

    5.4.2 count()方法

    count() 方法用来统计某个元素在列表中出现的次数,
    基本语法格式为:listname.count(obj)

    listname 代表列表名,obj 表示要统计的元素。

如果 count() 返回 0,就表示列表中不存在该元素,所以 count() 也可以用来判断列表中的某个元素是否存在。

  1. nums = [40, 36, 89, 2, 36, 100, 7, -20.5, 36]
  2. #统计元素出现的次数
  3. print("36出现了%d次" % nums.count(36))
  4. #判断一个元素是否存在
  5. if nums.count(100):
  6. print("列表中存在100这个元素")
  7. else:
  8. print("列表中不存在100这个元素")
  9. ————————运行结果————————
  10. 36出现了3
  11. 列表中存在100这个元素

5.5 列表的复制

6. 对列表元素进行排序

6.1 使用列表对象的sort()方法实现

列表对象提供了sort()方法用于对原列表中的元素进行排序。排序后原列表中的元素顺序将发生改变。

  1. listname.sort(key=None,reverse=False)
  • key:表示指定一个从每个列表元素中提取一个比较键(例如,设置“key=str.lower”表示在排序时不区分字母大小写);
  • reverse:可选参数,如果将其值指定为True,则表示降序排列,如果为False,则表示升序排列。默认为升序排列。

    6.2 使用内置的sorted()函数实现

    在Python中,提供了一个内置的sorted()函数,用于对列表进行排序。使用该函数进行排序后,原列表的元素顺序不变。

    1. sorted(iteable,key=None,reverse=False)
  • iterable:表示要进行排序的列表名称;

  • key:表示指定从每个元素中提取一个用于比较的键(例如,设置“key=str.lower”表示在排序时不区分字母大小写);
  • reverse:可选参数,如果将其值指定为True,则表示降序排列,如果为False,则表示升序排列。默认为升序排列。

7. 列表推导式

7.1 根据列表生成指定需求的列表

  1. newlist = [Expression for var in list]
  • list:表示生成的列表名称;
  • Expression:表达式,用于计算新列表的元素;
  • var:循环变量;
  • list:用于生成新列表的原列表。 ```python price = [1200,5330,2988,6200,1998,8888] sale = [int(x*0.5) for i in price] print(“原价格:”,price) print(“打5折后的价格:”,sale)

————————————执行结果——————————

[1200,5330,2988,6200,1998,8888] [600,2665,1494,3100,999,4444]

  1. <a name="zjNDa"></a>
  2. ### 7.2 从列表中选择符合条件的元素组成新的列表
  3. ```python
  4. newlist = [Expression for var in list if condition]
  • newlist:表示新生成的列表名称;
  • Expression:表达式,用于计算新列表的元素;
  • var:变量,值为后面列表的每个元素值;
  • list:用于生成新列表的原列表; 
  • condition:条件表达式,用于指定筛选条件。 ```python price = [1200,5330,2988,6200,1998,8888] sale = [x for i in price if x>5000] print(“原列表:”,price) print(“价格高于5000的:”,sale)

————————————执行结果——————————

[1200,5330,2988,6200,1998,8888] [5330,6200,8888] ```