python中的序列结构——列表list

简介:

        数组(Array),它就可以把多个数据挨个存储到一起,通过数组下标可以访问数组中的每个元素。Python中没有数组,但是加入了更加强大的列表。

        列表会将所有元素都放在一对中括号[ ]里面,相邻元素之间用逗号,分隔。列表的元素可以是整数、小数、字符串、列表、元组等任何类型的数据,并且同一个列表中元素的类型也可以不同。

[element1, element2, element3, ..., elementn]

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

基本操作:

1、创建列表

        此处使用三种方法进行列表的创建:

        1.1 使用[]直接创建列表。

        使用[ ]创建列表后,一般使用=将它赋值给某个变量,具体格式如下:

listname = [element1 , element2 , element3 , ... , elementn]

        listname为集合名称,举例:

>>> num = [1, 2, 3, 4, 5, 6, 7]  # 创建列表
>>> num
[1, 2, 3, 4, 5, 6, 7]
>>> name = ["www.qinjl.com"]
>>> name
>>> emptylist = [ ]  # 创建一个空列表
>>> emptylist
[]
>>>

        1.2 使用list()函数创建列表

        内置函数list()可以将其它数据类型转换为列表类型,语法格式如下:

listname = list(iteration)

        多种类型转列表,举例:

>> list1 = list("hello")  # 字符串转列表
>>> list1
['h', 'e', 'l', 'l', 'o']
>>> tuple1 = ('Python', 'Java', 'C++', 'JavaScript')  # 元组转列表
>>> list2 = list(tuple1)
>>> list2
['Python', 'Java', 'C++', 'JavaScript']
>>> dict1 = {'a':100, 'b':42, 'c':9}  # 字典转列表
>>> list3 = list(dict1)
>>> list3
['a', 'b', 'c']
>>> print(list())  # 创建空列表
[]
>>>

        1.3 拼接创建列表

          使用+运算符可以将多个序列连接起来;列表是序列的一种,所以也可以使用+进行连接,这样就相当于在第一个列表的末尾添加了另一个列表。使用+会生成一个新的列表,原有的列表不会被改变。

>>> list1
['h', 'e', 'l', 'l', 'o']
>>> list2
['Python', 'Java', 'C++', 'JavaScript']
>>> list3 = list1 + list2  # 两个列表相加
>>> list3
['h', 'e', 'l', 'l', 'o', 'Python', 'Java', 'C++', 'JavaScript']
>>>

2、访问元素

        首先在这之前,明确python中的索引,包括正索引和负索引两部分,如图以 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]为列子:

        使用索引访问列表元素的格式为,i可以是正数,也可以是负数:

listname[i]

         使用切片访问列表元素的格式为,其中listname 表示列表名字,start 表示起始索引,end 表示结束索引,step 表示步长:

listname[start : end : step]

        下面看几个实例,可以参照上表对照看:

>>> list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> list
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> list[1]  # 正数索引
1
>>> list[-3]  # 负数索引
7
>>> list[2: 7]  # 正数切片索引
[2, 3, 4, 5, 6]
>>> list[2: 7: 2]  # 正数切片索引
[2, 4, 6]
>>> list[-6: -1]  # 负数切片
[4, 5, 6, 7, 8]
>>> list[::-1]  # 列表逆序
[9, 8, 7, 6, 5,

3、删除列表

        对于已经创建的列表,如果不再使用,可以使用del关键字将其删除。

>>> list1 = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> list1
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> del(list1)  # 删除list
>>> list1
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'list1' is not defined
>>>

4、列表中添加元素

        在创建列表的时候,使用 + 可以将两个列表合并。此处还有append(),extend(),insert()三种方法。

        4.1 使用append()函数添加元素

        append() 方法用于在列表的末尾追加元素,该方法的语法格式如下:

listname.append(obj)

        listname表示要添加元素的列表;obj表示到添加到列表末尾的数据,它可以是单个元素,也可以是列表、元组等,举例:

        当给append()方法传递列表或者元组时,会将它们视为一个整体,作为一个元素添加到列表中,从而形成包含列表和元组的新列表。

>>> program = ["Python", "C++", "Java"]
>>> program
['Python', 'C++', 'Java']

# 追加一个元素到列表末尾
>>> program.append("PHP")
>>> program
['Python', 'C++', 'Java', 'PHP']

# 把元组当做一个列表追加到列表末尾
>>> other = ("JavaScript", "C#", "Go")
>>> program.append(other)
>>> print(program)
['Python', 'C++', 'Java', 'PHP', ('JavaScript', 'C#', 'Go')]

# 把列表当做一个元素追加到列表末尾
>>> data = ["Ruby", "SQL"]
>>> program.append(data)
>>> print(program)
['Python', 'C++', 'Java', 'PHP', ('JavaScript', 'C#', 'Go'), ['Ruby', 'SQL']]
>>>

        4.2 使用extend()函数添加元素

·        extend() 不会把列表或者元祖视为一个整体,而是把它们包含的元素逐个添加到列表中。语法格式如下:

listname.extend(obj)

        其中,listname 指的是要添加元素的列表;obj 表示到添加到列表末尾的数据,它可以是单个元素,也可以是列表、元组等,但不能是单个的数字。举例:

>>> l = ['Python', 'C++', 'Java']

# 末尾追加一个元素
>>> l.extend('C')
>>> l
['Python', 'C++', 'Java', 'C']

# 将元组拆分为多个元素追加到末尾
>>> t = ('JavaScript', 'C#', 'Go')
>>> l.extend(t)
>>> l
['Python', 'C++', 'Java', 'C', 'JavaScript', 'C#', 'Go']

# 将列表拆分追加到末尾
>>> l.extend(['Ruby', 'SQL'])
>>> l
['Python', 'C++', 'Java', 'C', 'JavaScript', 'C#', 'Go', 'Ruby', 'SQL']
>>>

        4.3 使用insert()函数插入元素

        append() extend() 方法只能在列表末尾插入元素,如果希望在列表中间某个位置插入元素,那么可以使用 insert() 方法,语法格式如下:

listname.insert(index , obj)

        其中,index 表示指定位置的索引值。insert() 会将 obj 插入到 listname 列表第 index 个元素的位置,举例。

        当插入列表或者元祖时,insert() 也会将它们视为一个整体,作为一个元素插入到列表中,这一点和 append() 是一样的。

>>> program = ["Python", "C++", "Java"]
>>> program
['Python', 'C++', 'Java']

# 在位置1插入单个元素
>>> program.insert(1, "C")
>>> program
['Python', 'C', 'C++', 'Java']

# 把元组当做单个元素插入位置0
>>> other = ("JavaScript", "C#", "Go")
>>> program.insert(0, other)
>>> program
[('JavaScript', 'C#', 'Go'), 'Python', 'C', 'C++', 'Java']

# 把列表当做单个元素插入位置2
>>> data = ["Ruby", "SQL"]
>>> program.insert(2, data)
>>> program
[('JavaScript', 'C#', 'Go'), 'Python', ['Ruby', 'SQL'], 'C', 'C++', 'Java']
>>>

5、列表元素的删除

        在列表中删除元素主要分为以下 3 种场景:

  • 根据元素所在位置的索引进行删除,可以使用 del 关键字或者 pop() 方法;

  • 根据元素本身的值进行删除,可使用列表(list类型)提供的 remove() 方法;

  • 列表中所有元素全部删除,可使用列表(list类型)提供的 clear() 方法。

        5.1 使用del关键字根据索引删除元素

        del 是 Python 中的关键字,专门用来执行删除操作,它不仅可以删除整个列表,还可以删除列表中的某些元素,语法格式为:

        

del listname[index]  # 删除指定位置的元素

del listname[start : end]  # 删除一段连续的元素

        其中,listname 表示列表名称,index 表示元素的索引值,start 表示起始索引,end 表示结束索引。del 会删除从索引 start 到 end 之间的元素,不包括 end 位置的元素(左闭右开)

        

>>> lang = ["Python", "C++", "Java", "PHP", "Ruby", "MATLAB"]
>>> del lang[2]  # 删除一个元素
>>> lang
['Python', 'C++', 'PHP', 'Ruby', 'MATLAB']
>>> del lang[1: 4]  # 删除一组元素
>>> lang
['Python', 'MATLAB']
>>>

        5.2使用pop()函数根据索引删除

        pop() 方法用来删除列表中指定索引处的元素,具体格式如下:

listname.pop(index)

       其中,listname 表示列表名称,index 表示索引值。如果不写 index 参数,默认会删除列表中的最后一个元素,类似于数据结构中的“出栈”操作,举例:

>>> nums = [40, 36, 89, 2, 36, 100, 7]
>>> nums.pop(3)  # 弹出位置3上的元素
2
>>> nums
[40, 36, 89, 36, 100, 7]
>>> nums.pop()  # 弹出最后一个位置的元素
7
>>> nums
[40, 36, 89, 36, 100]
>>>

        5.3 使用remove()函数根据元素值进行删除

        remove() 方法会根据元素本身的值来进行删除操作。

        需要注意的是,remove() 方法只会删除第一个和指定值相同的元素,而且必须保证该元素是存在的,否则会引发 ValueError 错误。

>>> nums = [40, 36, 89, 2, 36, 100, 7]
>>> nums.remove(36)  # 第一次删除36
>>> nums
[40, 89, 2, 36, 100, 7]
>>> nums.remove(36)  # 第二次删除 36
>>> nums
[40, 89, 2, 100, 7]
>>> nums.remove(78)  # 列表中不存在元素,报错
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: list.remove(x): x not in list
>>>

        5.4 使用clear()函数删除所有元素

        Python clear() 用来删除列表的所有元素,也即清空列表

>>> url = list("www.qinjl.com")
>>> url
['w', 'w', 'w', '.', 'q', 'i', 'n', 'j', 'l', '.', 'c', 'o', 'm']
>>> url.clear()  # 清空列表
>>> url
[]
>>>

6、修改元素

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

>>> nums = [40, 36, 89, 2, 36, 100, 7]
>>> nums[2] = 33  # 将位置2的89修改为33
>>> nums
[40, 36, 33, 2, 36, 100, 7]
>>>

        也可以修改一组元素,用切片法给一组元素赋值。在进行这种操作时,如果不指定步长(step 参数),Python 就不要求新赋值的元素个数与原来的元素个数相同,举例:

# 修改第1-4个元素
>>> nums = [40, 36, 89, 2, 36, 100, 7]
>>> nums[1: 4] = [45.25, -77, -52.5]
>>> nums
[40, 45.25, -77, -52.5, 36, 100, 7]

# 对于空切片赋值相当于插入一组新的元素
>>> nums[4: 4] = [-77, -52.5, 999]
>>> nums
[40, 45.25, -77, -52.5, -77, -52.5, 999, 36, 100, 7]

# 指定步长为2,相当于为1、3、5位置赋值
>>> nums = [40, 36, 89, 2, 36, 100, 7]
>>> nums[1: 6: 2] = [0.025, -99, 20.5]
>>> nums
[40, 0.025, 89, -99, 36, 20.5, 7]
>>>

7、查找元素

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

        7.1利用index()查找元素位置

        index() 方法用来查找某个元素在列表中出现的位置(也就是索引),如果该元素不存在,则会导致 ValueError 错误,所以在查找之前最好使用 count() 方法判断一下,语法格式:

listname.index(obj, start, end)

        其中,listname 表示列表名称,obj 表示要查找的元素,start 表示起始位置,end 表示结束位置。start 和 end 参数用来指定检索范围,举例:

>>> nums = [40, 36, 89, 2, 36, 100, 7, -20.5, -999]
>>> nums.index(2)  # 检测所有元素
3
>>> nums.index(100, 3, 7) # 检测3-7之间元素
5
>>> nums.index(55)  # 元素不存在,报错
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: 55 is not in list
>>>

        7.2 利用count()方法统计元素出现次数

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

listname.count(obj)

        其中,listname 代表列表名,obj 表示要统计的元素,举例:

>>> numbers = [1, 2, 3, 2, 4, 6, 8]
>>> numbers.count(2)  # 数字2出现2次
2
>>> numbers.count(10)  # 数字10出现0次
0
>>>

8、常用方法

>>> dir(list)
'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
>>>

python中列表list常用方法

序号方法描述
1list.append(obj)在列表末尾添加新的对象
2list.count(obj)统计某个元素在列表中出现的次数
3list.extend(seq)在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
4list.index(obj)从列表中找出某个值第一个匹配项的索引位置
5list.insert(index, obj)将对象插入列表
6list.pop([index=-1])移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
7list.remove(obj)移除列表中某个值的第一个匹配项
8list.reverse()反向列表中元素
9list.sort( key=None, reverse=False)对原列表进行排序
10list.clear()清空列表
11list.copy()复制列表

参考:

python切片详解——[a::-1]、 [:b:-1]、 [::-1]的使用_狒狒fei狒的博客-CSDN博客_列表切片[::-1]

Python基础篇(三)-- 列表、元组、字典、集合、字符串_长路漫漫2021的博客-CSDN博客_python 元组 列表 字典 字符串 集合

【Python】list 列表增删改查详解、实现栈和队列、注意事项_一个写湿的程序猿的博客-CSDN博客

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值