python列表基本用法

目录

序言:

0.0 list()函数

1.0 append()函数

2.0 clear()函数

3.0 copy()函数

4.0 count()函数

5.0 extend()函数

6.0 index()函数

7.0 insert()函数

8.0 pop()函数

9.0 remove()函数

10.0 reverse()函数

11.0 sort()函数


序言:

列表中各元素间是有序的,属于序列类型。列表可以进行元素的 添加,删除,查找,替换 等操作。列表长度没有限制,不需要定义长度,列表中的元素类型可以不同,可以是 字母,数字,集合,列表,元组,字符串等。

 

0.0 list()函数

描述:可以将其它的组合数据类型转化为列表类型,或生成一个空列表。

语法:list() -> new empty list  返回一个空列表

            list(iterable) -> new list initialized from iterable's items  返回一个新列表

  • iterable —— 要转换的组合数据类型。

程序示例:


 
 
  1. ls = list() #创建一个空列表。
  2. st = { 1, 2, 3, "a"} #集合类型
  3. d = { 1: "a", 2: "b"} #字典类型
  4. t = ( 1, 2, 3, "b") #元组类型
  5. s = "厉害了,我的国!" #字符串类型
  6. #将集合,字典,元组,字符串 类型转化为列表类型
  7. ls1 =list(st)
  8. ls2 =list(d)
  9. ls3 =list(t)
  10. ls4 =list(s)
  11. print(ls)
  12. print(ls1)
  13. print(ls2)
  14. print(ls3)
  15. print(ls4)

程序运行结果:


 
 
  1. []
  2. [1, 2, 3, 'a']
  3. [1, 2]
  4. [1, 2, 3, 'b']
  5. ['厉', '害', '了', ',', '我', '的', '国', '!']

1.0 append()函数

描述:在列表ls最后(末尾)添加一个元素object

语法:ls.append(object) -> None 无返回值

  • object —— 要添加的元素。可以添加 列表,字典,元组,集合,字符串等。

程序示例: 


 
 
  1. ls1 = [ 1, 2, 3, 4, 5, 6]
  2. ls2 = [ 1, 2, 3, 4, 5, 6]
  3. ls1.append( 12)
  4. #可以添加列表,字典,元组,集合,字符串等
  5. ls2.append([ 1, "a"]) #添加列表
  6. ls2.append({ 2: "a", 3: "hj"}) #添加字典
  7. ls2.append(( 1, "k", 3)) #添加元组
  8. ls2.append({ "1", "2", "h"}) #添加集合
  9. ls2.append( "123abc") #添加字符串
  10. print(ls1.append( 12)) #无返回值
  11. print(ls1) #append()函数的操作对象是原列表。
  12. print(ls2)

 程序运行结果:


 
 
  1. None
  2. [1, 2, 3, 4, 5, 6, 12, 12]
  3. [1, 2, 3, 4, 5, 6, [1, 'a'], {2: 'a', 3: 'hj'}, (1, 'k', 3), {'2', '1', 'h'}, '123abc']

2.0 clear()函数

描述:删除列表ls中的所有元素。

语法: ls.clear() -> None 返回值为空

程序示例:


 
 
  1. ls = [ 1, 2, 3, "4", 5, "a"]
  2. ls.clear() #删除列表中的所有元素。
  3. print(ls.clear()) #无返回值
  4. print(ls) #返回的ls为空列表。

程序运行结果:


 
 
  1. None
  2. []

3.0 copy()函数

描述:生成一个新列表,复制ls中的所有元素。

语法: ls.copy() -> list 返回一个列表

程序示例:


 
 
  1. ls = [ 1, 2, 3,[ 4, 5, 6]]
  2. lt = ls.copy() #lt复制ls中的所有元素
  3. ls.clear() #删除ls所有元素,lt中的元素没有被删除。
  4. lk = ls #这不是复制,而是给列表ls新关联一个引用,即增加一个别名,ls和lt指向同一个内存地址。
  5. print(id(ls),id(lk))
  6. print(lt)
  7. print(ls)

程序运行结果:


 
 
  1. 2161190907400 2161190907400
  2. [1, 2, 3, [4, 5, 6]]
  3. []

发现一个有趣的现象:

无论是修改原列表ls的内嵌套列表的元素,还是修改复制列表lt的内嵌套列表元素。列表ls和列表lt的内嵌套列表元素都将改变。

但修改列表ls或列表lt的其它非嵌套元素,都不改变对方相应的元素。

程序示例①:


 
 
  1. ls = [ 1, 2, 3,[ 4, 5, 6]]
  2. lt = ls.copy() #lt复制ls中的所有元素
  3. ls[ 0] = "a" #对变列表ls中的第一个元素进行修改
  4. ls[ 3][ 0] = "a" #对列表ls中第四个元素的第一个元素进行修改
  5. print(lt) #列表lt的第一个元素不变,但第四个元素的第一个元素发生改变。
  6. print(ls)

程序运行结果:


 
 
  1. [1, 2, 3, ['a', 5, 6]]
  2. ['a', 2, 3, ['a', 5, 6]]

程序示例②:


 
 
  1. ls = [ 1, 2, 3,[ 4, 5, 6]]
  2. lt = ls.copy()
  3. lt[ 0] = "a" #对变列表lt中的第一个元素进行修改
  4. lt[ 3][ 0] = "a" #对列表lt中第四个元素的第一个元素进行修改
  5. print(lt)
  6. print(ls) #列表ls的第一个元素不变,但第四个元素的第一个元素发生改变。

程序运行结果:


 
 
  1. ['a', 2, 3, ['a', 5, 6]]
  2. [1, 2, 3, ['a', 5, 6]]

程序示例③:深层复制方法


 
 
  1. import copy
  2. ls = [ 1, 2, 3,[ 7, "b", 9], "a"]
  3. lt1 = copy.deepcopy(ls) #深层复制。
  4. lt2 = copy.copy(ls) #浅层复制
  5. ls[ 3][ 1] = "abc123" #改变原列表ls中内嵌套列表[7,"b",9] 中的“b”元素。深层复制的lt1列表对应位置元素不改变,但浅层复制改变。
  6. print(ls)
  7. print( "深层复制:",lt1)
  8. print( "浅层复制:",lt2)

 程序运行结果:


 
 
  1. [1, 2, 3, [7, 'abc123', 9], 'a']
  2. 深层复制: [1, 2, 3, [7, 'b', 9], 'a']
  3. 浅层复制: [1, 2, 3, [7, 'abc123', 9], 'a']

总结:ls.copy() 函数只能 copy 一层,即copy()复制是浅复制。

4.0 count()函数

描述:统计列表ls中value元素出现的次数

语法:ls.count(value) -> integer  返回一个整数

  • value —— 要统计的value元素。

程序示例:


 
 
  1. ls = [ 1, 2, 3, 5, 4, 5, 5, 5, 5, "python"]
  2. print(ls.count( 5)) #统计列表ls中 5 出现的次数
  3. print(ls.count( 0)) #列表ls中无0元素
  4. print(ls.count( "python")) #统计列表ls中 "python" 出现的次数。

程序运行结果:


 
 
  1. 5
  2. 0
  3. 1

5.0 extend()函数

描述:在列表ls末尾添加一个列表iterable。

语法:ls.extend(iterable) -> None 无返回值

  • iterable —— 要添加的列表。可以是整个列表iterable,也可以是列表iterable的一部分。

程序示例①:


 
 
  1. ls = [ 1, 2, "a",[ 4, 5, "a"]]
  2. lt = [ 1, "abc", "b",[ 1, 2]]
  3. ls.extend(lt) #返回值为空,将列表lt的元素添加到列表ls末尾。
  4. print(ls.extend(lt))
  5. print(ls)
  6. print(lt) #列表lt元素不变

程序运行结果:


 
 
  1. None
  2. [1, 2, 'a', [4, 5, 'a'], 1, 'abc', 'b', [1, 2], 1, 'abc', 'b', [1, 2]]
  3. [1, 'abc', 'b', [1, 2]]

程序示例②:


 
 
  1. ls = [ 1, 2, "a",[ 4, 5, "a"]]
  2. lt = [ 1, "abc", "b",[ 1, 2]]
  3. ls.extend(lt[ 0: 3]) #返回值为空,将列表lt中的 1, 'abc', 'b' 添加到列表ls末尾。
  4. print(ls)
  5. print(lt) #列表lt元素不变

程序运行结果:


 
 
  1. [1, 2, 'a', [4, 5, 'a'], 1, 'abc', 'b']
  2. [1, 'abc', 'b', [1, 2]]

6.0 index()函数

描述:列表ls中第一次出现元素value的位置。

语法: ls.index(value, start, stop)  -> integer 返回一个整数

  • value —— 要查找的元素。
  • star —— 索引的起始位置。
  • stop —— 索引的结束位置。
  • [star,stop)

程序示例:


 
 
  1. ls = [ 1, 2, 3, "a", 3, 5, "a", 5,[ 1, 7, "b"]]
  2. print(ls.index( "a")) #返回列表ls中"a"第一次出现的位置。
  3. print(ls.index( "a", 4)) #索引的起始位置为下标为4的元素,索引范围为 3, 5, 'a', 5, [1, 7, 'b'
  4. print(ls.index( "a", 4, 8)) #索引的起始位置为下标为4的元素,结束位置为下标为7的元素。索引范围 3, 5, 'a', 5
  5. print(ls.index( 3))
  6. print(ls[ 8].index( "b")) #返回列表ls内嵌套列表[1,7,"b"]中"b"第一次出现的位置
  7. print(ls.index( 0)) #列表ls无0,报错

程序运行结果:


 
 
  1. 3
  2. 6
  3. 6
  4. 2
  5. 2
  6. ---------------------------------------------------------------------------
  7. ValueError Traceback (most recent call last)
  8. <ipython-input-64-c3f3008df73b> in <module>()
  9. 5 print(ls.index(3))
  10. 6 print(ls[8].index("b")) #返回列表ls内嵌套列表[1,7,"b"]中"b"第一次出现的位置
  11. ----> 7 print(ls.index(0)) #列表ls无0,报错
  12. ValueError: 0 is not in list

7.0 insert()函数

描述:在列表第index位置,添加元素object。

语法: ls.insert(index, object)

  • index —— 元素object插入列表ls的位置。
  • objece —— 将要添加的元素。可以是列表,元组,字典,集合,字符串等

程序示例①:


 
 
  1. ls = [ 1, 2, "a",[ "a", 5, 8]]
  2. ls.insert( 3, "b") #在列表ls下标为3的位置插入元素 1
  3. ls.insert( 3, 1) #在列表ls下标为3的位置插入元素 "b"
  4. ls[ 5].insert( 0, "acv") #在列表ls的内嵌套列表["a",5,8],下标为0的位置插入字符串"acv"
  5. print(ls)

程序运行结果:


 
 
  1. [1, 2, 'a', 1, 'b', ['acv', 'a', 5, 8]]

 

程序示例②:


 
 
  1. ls = [ 1, 2, 3]
  2. ls.insert( 0,[ 1, 2, 3]) #插入列表
  3. ls.insert( 0,( 1, 2, 3)) #插入元组
  4. ls.insert( 0,{ 1: "a", 2: "b"}) #插入字典
  5. ls.insert( 0,{ 1, 2, 3}) #插入集合
  6. print(ls)

程序运行结果:

[{1, 2, 3}, {1: 'a', 2: 'b'}, (1, 2, 3), [1, 2, 3], 1, 2, 3]
 
 

8.0 pop()函数

描述:将列表ls中第index项元素取出,并从列表ls中删除该元素。若果省略index,则默认删除列表最后(末尾)一个元素,并返回该元素。

语法:  ls.pop(index) -> item 返回删除的项

  • index —— 要取出并删除的元素下标的序数。

程序示例:


 
 
  1. ls = [ 1, 2, "a", "y",[ 1, 2, 3], "b"]
  2. print(ls.pop( 0)) #取出下标为0的元素,并从列表ls中删除。
  3. print(ls.pop( 3))
  4. print(ls.pop()) #默认取出列表ls最后一个元素,并删除。
  5. print(ls) #列表中的 1 [1,2,3] "b" 元素已被删除。

程序运行结果:


 
 
  1. 1
  2. [1, 2, 3]
  3. b
  4. [2, 'a', 'y']

9.0 remove()函数

描述:将列表ls中出现的第一个元素value删除。

语法:ls.remove(value) -> None 返回值为空

  • value ———— 要删除的元素。

程序示例:


 
 
  1. ls1 = [ 1, 2, "a", 3, 1, 1, 55, "a,1"]
  2. ls2 = [ 1, 2, "a", 3, 1, 1, 55, "a,1"]
  3. ls1.remove( 1) #删除ls1中第一次出现的元素 1
  4. ls2.remove( "a") ##删除ls2中第一次出现的元素 "a"
  5. print(ls1.remove( 1)) #返回值为空
  6. print(ls1)
  7. print(ls2)

程序运行结果:


 
 
  1. None
  2. [2, 'a', 3, 1, 55, 'a,1']
  3. [1, 2, 3, 1, 1, 55, 'a,1']

也可以使用python的保留字 del 对列表的元素或部分片段进行删除

语法:

① del  <列表变量>[索引序列号] 

② del <列表变量>[索引起始位置 :索引结束位置]

③ del <列表变量>[索引起始位置 :索引结束位置:步长]

程序示例:


 
 
  1. ls1 = [ 1, 2, 3, 4, "a",[ 1, 2, 3], 5, 6]
  2. ls2 = [ 1, 2, 3, 4, "a",[ 1, 2, 3], 5, 6]
  3. ls3 = [ 1, 2, 3, 4, "a",[ 1, 2, 3], 5, 6]
  4. del ls1[ 0] #删除列表ls1中下标为0的元素
  5. print(ls1)
  6. del ls1[ 2:] #删除列表ls1中 起始下标为2,到结尾的元素
  7. print(ls1)
  8. del ls2[ 2: 6] #删除列表ls2中 起始下标为2,终止下标为6 之间的元素。
  9. print(ls2)
  10. del ls3[ 1: 6: 2] #起始位置为2,终止位置为6,步长为2
  11. print(ls3)

程序运行结果:


 
 
  1. [2, 3, 4, 'a', [1, 2, 3], 5, 6]
  2. [2, 3]
  3. [1, 2, 5, 6]
  4. [1, 3, 'a', 5, 6]

10.0 reverse()函数

描述:将列表ls中的元素反转。

语法:ls.reverse()

程序示例:


 
 
  1. ls1 = [ 1, 2, 3, 4, 5, 6, 7, 8, 9]
  2. ls1.reverse() #将列表ls1反转输出
  3. print(ls1)
  4. ls2 = [ 2, 5, 8, 9, 4, 1, 2, 6, 2, 1, 3]
  5. ls2.sort(reverse= True) #ls2.sort()默认将列表ls2按从小到大的序数排列。reverse=True 使排序后的列表反转,reverse=False 则不反转
  6. print(ls2)

程序运行结果:


 
 
  1. [9, 8, 7, 6, 5, 4, 3, 2, 1]
  2. [9, 8, 6, 5, 4, 3, 2, 2, 2, 1, 1]

11.0 sort()函数

描述:将列表ls中的同类元素按大小进行排序,默认从小到大排序。

语法: ls.sort(key=None, reverse=False) -> None 返回值为空

  • key —— 接受一个函数,且该函数只有一个返回值
  • reverse —— 排序规则,即排序是否反转。默认为False 不反转(升序),True 则反转(降序)。

程序示例:


 
 
  1. ls1 = [ 5, 2, 1, 6, 9, 55, 2, 8, 10]
  2. ls2 = [( 1, 2),( 3, 5),( 55, 1),( 6, 0)]
  3. ls3 = [ "a", "z", "A", "y", "g"]
  4. ls4 = [ 1, 6, 2, "a", "z", "h"]
  5. ls1.sort() #默认升序排序
  6. print(ls1)
  7. def f(n):
  8. return n[ 1] #对元组的第二个元素进行升序排序
  9. ls2.sort(key=f)
  10. print(ls2)
  11. ls3.sort(reverse= True) #降序排序
  12. print(ls3)
  13. ls4.sort() #会报错,列表ls4中元素种类不同。
  14. print(ls4)

程序运行结果:


 
 
  1. [1, 2, 2, 5, 6, 8, 9, 10, 55]
  2. [(6, 0), (55, 1), (1, 2), (3, 5)]
  3. ['z', 'y', 'g', 'a', 'A']
  4. ---------------------------------------------------------------------------
  5. TypeError Traceback (most recent call last)
  6. <ipython-input-123-7a42b5fc86f8> in <module>()
  7. 15 print(ls3)
  8. 16
  9. ---> 17 ls4.sort()
  10. 18 print(ls4)
  11. TypeError: unorderable types: str() < int()

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值