python中的列表

摘要:本文主要介绍了python中列表的内容。

1、列表的基本使用

  • 列表的基本使用很类似于c语言中的数组,只不过它使用起来更加的方便。由于python是一种弱类型的语言,所以在一个列表中可以同时含有整数、浮点数、字符串。取出每一个元素时,就像c语言中一样,通过下标即可完成。例如:
1 >>> sam=['abc',125,'hello',3.14]
2 >>> sam
3 ['abc', 125, 'hello', 3.14]
4 >>> sam[0]
5 'abc'
  •  列表相比c语言中的数组更加强大,它甚至可以在列表中包含一个列表,例如:
1 >>> bbs=['abc',['hj',789,3.14],90,89.99]
2 >>> bbs
3 ['abc', ['hj', 789, 3.14], 90, 89.99]
4 >>> bbs[2]
5 90
6 >>> bbs[1]
7 ['hj', 789, 3.14]
  • 在进行下标取值时,还可以用负数来进行逆序的方法,例如:
1 >>> pps=['hda',90,9.89,'dgja']
2 >>> pps
3 ['hda', 90, 9.89, 'dgja']
4 >>> pps[-1]
5 'dgja'
  • 在列表中还可以使用切片的方法获取子列表:
1 >>> spam=['abc','yui','aghs','agshyd']
2 >>> spam[:]
3 ['abc', 'yui', 'aghs', 'agshyd']
4 >>> spam[1:3]
5 ['yui', 'aghs']
6 >>> spam[1:-1]
7 ['yui', 'aghs']

2、求长度、连接复制、删除、查找、多重赋值操作

  • 求取长度可以直接借助len( )函数
1 >>> pam=['abc','yui','aghs','agshyd']
2 >>> len(pam)
3 4
  • 连接复制可以直接采取+和*来完成
1 >>> buf=[1,2,3]
2 >>> buff=['a','b','c']
3 >>> buffadd=buf+buff
4 >>> buffadd
5 [1, 2, 3, 'a', 'b', 'c']
6 >>> buffmul=buf*3
7 >>> buffmul
8 [1, 2, 3, 1, 2, 3, 1, 2, 3]
  • 直接可以用del来对列表的元素进行删除
1 >>> qwe=['a','b','c']
2 >>> del qwe[1]
3 >>> qwe
4 ['a', 'c']
  • 可以直接用in和not in来判断一个元素是否在列表中
1 >>> fun=['dhs','abc',12,'da','uai']
2 >>> 'abc' in fun
3 True
4 >>> 'qew' in fun
5 False
  • 如果想将一个列表中的值赋值给一些变量,如果列表中元素的个数和变量的个数相同,那么就可以直接采用下面这样的简单的方式来进行:
1 >>> buff=['abc','def','tyu']
2 >>> a,b,c=buff
3 >>> a+b+c
4 'abcdeftyu'

3、列表类中的方法

在python中,列表在本质上就是一个类,其中包含了很多处理实例对象的方法,现在主要介绍这些方法:

  • 查找值操作:index(),参数为要查找的值

语法:调用该方法,如果该值存在,返回位置信息,不存在返回错误。

  • 插值操作:append()和insert()

语法:append()有一个参数,就是在列表的最后添加一个元素

insert()有两个参数,第一个参数是插值的位置,后面一个参数是要插入的值

  • 删除操作:remove()

注意区分和del的区别,remove是类下的一个函数,而del是一个删除的指令

语法:remove()只有一个参数,就是要删除的元素

  • 排序操作:sort()

语法:

  1. 默认参数下,直接调用这种方法。如果是数字,那么从小到大排序,如果是字符串,那么按照字符串的首字母的ASCLL码先后顺序进行排列
  2. 如果参数是reverse=True,那么就是进行逆序排列

注意:对于数字和字母混合在一起的列表是无法进行排序的

4、列表和字符串

学到此处,有一个问题,在c语言中,字符串其实是一种特殊的数组,那么在python中两者有区别吗?

答案是有的,下面进行具体的讲解:

首先,我们可以通过最简单的方法对字符串进行操作:

1 >>> qwe='abcd'
2 >>> qwe[1]
3 'b'

这样的操作在列表中也是完全合法的,但是列表却要比字符串的操作强大很多:列表的数据是可以改变的,但是字符串却不可以:

1 >>> fun='i am chinese'
2 >>> fun[0]=you    #操作报错
3 Traceback (most recent call last):
4   File "<pyshell#11>", line 1, in <module>
5     fun[0]=you
6 NameError: name 'you' is not defined
7 >>> newfun='you '+fun[2:len(fun)]   
8 >>> newfun
9 'you am chinese'

另外,还可以通过list()和tuple()这两个函数来实现对参数的类型转换。例如:

1 >>> tuple(['asd','qwe'])
2 ('asd', 'qwe')
3 >>> list(('asd', 'qwe'))
4 ['asd', 'qwe']
5 >>> list('asdfg')
6 ['a', 's', 'd', 'f', 'g']
7 >>> tuple(('asdfg'))
8 ('a', 's', 'd', 'f', 'g')

5、列表中的引用

我们一定要了解这样一个事实:列表的名称并不是列表本身,而是一个列表的引用。例如现在有一个列表Sam=['qwe',123],Sam在这里就是一个列表的引用,真正的列表引用通过一个ID号来进行联系,当进行操作“Bam=Sam”时,那么就产生了两个引用(同一个ID)指向了同一个列表的事情,当列表的内容发生改变时,那么两个引用的内容自然也就发生了改变。实验如下:

 1 >>> Sam=['qwe',123]
 2 >>> Bam=Sam
 3 >>> Sam[1]='asd'
 4 >>> Sam
 5 ['qwe', 'asd']
 6 >>> Bam
 7 ['qwe', 'asd']
 8 >>> id(Sam)
 9 50147208
10 >>> id(Bam)
11 50147208

但是在变量赋值的情况中却不会如此:

1 >>> a=12
2 >>> b=a
3 >>> id(a)
4 8791474689408
5 >>> id(b)
6 8791474689408
7 >>> a=13
8 >>> b
9 12

6、copy模块

copy模块下有copy()和deepcopy()两种复制的方法,下面进行进一步的探究:

1 >>> import copy
2 >>> spam=['a','b','c']
3 >>> bam=copy.copy(spam)
4 >>> id(spam)
5 51938952
6 >>> id(bam)
7 47246152

可以看到,在copy模式中,复制是完全创建了一个新的列表。这里不再展示,deepcopy模式也是完全复制,只不过deepcopy的复制是针对含有列表的列表

转载于:https://www.cnblogs.com/lzy820260594/p/11530550.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值