列表(list)是Python中最常用的内置类型之一,是处理一组有序项目的数据结构,或者说,是一个有序对象的集合。通俗地理解,列表即序列,它是一系列数据的序列。在前文介绍的字符串中,字符串包含的值是一个个字符。而在列表中,值可以是任意类型。列表的值一般也称为列表的元素,通过英文逗号分隔,并包含在方括号内。

一、列表的特点:

       1.列表是一种无序的、可重复的数据序列,可以随时添加、删除其中的元素。

       2.列表的每个元素都分配一个数字索引,和字符串一样,索引从0开始。

       3.列表使用方括号创建,使用英文逗号分隔元素。

       4.列表元素值可以是任意类型,包括变量(需预先定义赋值)。

       5.使用方括号对列表进行元素访问、切片、修改、删除等操作,开闭合区间为[)形式(取左不取右)。

       6.列表的元素可以是列表(列表的嵌套)。

 

二、创建列表

import math

name = []  # 创建一个空列表
age = list()  # 创建一个空列表
info = [3204, 'Jack', True, 3.14, math.pi]  # 创建有5个元素组成的列表

 

三、访问元素

       如果要提取列表中的元素,使用索引是一种方法,将索引值写在变量名后的方括号内,Python的索引是从0开始的。

print(info[1])
# Jack
print(info[5])
# IndexError: list index out of range

  列表的元素可以是任意类型,因此列表可以嵌套列表。

names = ['zhangsan', 'lisi', ['wangwu', 'zhaoliu'], 'liuqi']
print(names[2])  # 取索引为2的元素值,值仍为列表
# ['wangwu', 'zhaoliu']
print(names[2][1])  # 再取子列表中索引为1的元素值
# zhaoliu

  其它数据类型转列表,比如字符串转列表,元组转列表等等。

s = 'PYTHON'
list1 = list(s)
print(list1)
# ['P', 'Y', 'T', 'H', 'O', 'N']

  

四、列表的增删改查

 

       1.增

        Python中有3种方法可以为列表添加元素,分别是append()、insert()和extend()。

  • append(element):将元素element添加到列表的末尾。
nums=[1,2,3,4,5]
nums.append(6)
print(nums)    #[1,2,3,4,5,6]
  • insert(position, element):将元素element插入列表指定position位置。
nums=[1,2,3,4,5]
nums.insert(2,9)
print(nums)    #[1,2,9,3,4,5]
  • extend(list):使用另一个列表作参数,然后把所有的元素添加到一个列表上。
nums=[1,2,3,4,5]
nums.entend([8,9])
print(nums)    #[1,2,3,4,5,8,9]

  

       2.删

          Python中有3种方法可以为列表删除元素,分别是pop([index]),remove(element)和del命令。

  • pop([index]):移除索引位置index的元素并返回它的值,如果没有参数,则默认删除和返回最后一个。
nums=[1,2,3,4,5]
num=nums.pop()   # num:5  nums:[1,2,3,4]
nums.pop(1)    # nums:[1,3,4]   
nums.pop(6)    #索引不存在,报错
  • remove(element):移除参数中指定的元素element,如果存在多个同样的值,则移除最左边的。不同于pop(),这个方法不返回任何值。
nums=[1,2,3,4,5]
nums.remove(3)
print[nums]   #[1,2,4,5]
nums.remove(6) #值不存在,报错
  • 另一种方式是使用del命令,del list[0]类似于list.pop(0),但前者不会返回被删除的元素。
nums=[1,2,3,4,5]
del nums[1]   #等价于 nums.pop(1)
  • 除了上面提到的3种方法,另有clear()方法可以清洗列表,它会清空列表中的所有元素。
nums.clear()   #  []

  

       3.改

          列表是可以修改的,只需对指定的列表元素重新赋值即可。

nums=[1,3,5,6,9]
nums[3]=7
print(nums)   #[1,3,5,7,9]

     除了使用自然数进行索引元素,还可以使用负整数进行反向索引,比如nums[-1]也对应着9。

 

       4.查

          列表可以通过 index(element)进行查询,返回元素的索引位置,如果元素不存在,报错。

names=['zhangsan','lisi','wangwu','zhaoliu']
n=nums.index('wangwu')   #返回元素的索引位置 n:2
n1=nums.index('huanger')  #报错,元素不存在

  

五、列表的遍历

       1.使用while循环

          为了更有效的输出列表的每个数据,可以使用循环来完成。

names=['Jack','Rose','Alx']
length=len(names)  #len() 获取列表长度
i=0
while i<length:
    print(names[i])
    i+=1

  运行结果:

Jack
Rose
Alx

  

       2.使用for循环

          while循环是一种基本的遍历列表数据的方式,但是最常用也是最简单的方式是使用for循环。

 

names=['Jack','Rose','Alx']
for name in names:
    print(name)

  运行结果:

names=['Jack','Rose','Alx']
for name in names:
    print(name)

  

六、列表推导式

       列表推导式作用是用简单的语法创建一个列表。

nums=[i for i in range(10)]
print(nums)  #[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

nums1=[i for i in range(10) if i%2]   # i%2 除2取余为1
print(nums1)   #[1, 3, 5, 7, 9]

points=[(x,y) for x in range(3,5) for y in range(4,7)]
print(points)  #[(3, 4), (3, 5), (3, 6), (4, 4), (4, 5), (4, 6)]