资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

Python中的列表-创新互联

一、什么是列表

创新互联公司是一家从事企业网站建设、做网站、网站制作、行业门户网站建设、网页设计制作的专业网站建设公司,拥有经验丰富的网站建设工程师和网页设计人员,具备各种规模与类型网站建设的实力,在网站建设领域树立了自己独特的设计风格。自公司成立以来曾独立设计制作的站点上千家。

Python列表是线性表的一种表示方式。一个列表是n个数据元素的有限序列(a1,a2,…,an)。元素之间是相邻关系,即第i-1个元素领先于第i个元素,第i个元素领先于第i+1个元素。可以将第i-1个元素称为第i个元素的直接前驱元素,第i+1个元素称为第i个元素的直接后继元素。表中元素的个数为表的长度,长度为0的表称为空表。

Python列表中所存储元素的具体含义,在不同的情况下可以不同,它可以是一个数,也可以是字符串,甚至是更复杂的信息。它可以存储Python的标准类型,也可以存储自定义的数据结构及对象。Python对列表也提供了非常便捷的操作,列表可以执行pop、sort、append、remove等操作,也可以合并其它列表,或者将列表切片(切分出子列表)。

1、列表的结构

python的列表,相当于其他编程语言的数组。

>>> mylist = [1,2,3,4]

>>> mylist

[1, 2, 3, 4]

2、列表的特点

● 列表中所有的数据都是按顺序排列的,也就是说,列表属于顺序类型

● 列表找那个的所有数据都是有两个整数类型的索引,通过制定索引总能映射到唯一确定的数据

● 列表中可以存在重复的数据

● 列表中可以保存任何类型的数据,多种类型的数据可以混合存储。

● 列表可以根据需要动态的伸缩,也就是说,系统会根据需要动态的分配和回收内存。因此无需事先声明列表的容量。

二、列表的创建

● 列表中可以存储任意类型的对象

创建列表的两种方法

1、使用中括号[]

L = ['python',19,True] print (L) ['python', 19, True]

空列表创建

L = []

2、使用list的构造方法

L = list(range(0,8,2)) print (L) [0, 2, 4, 6]

空列表的创建

L = list() print (L) []

三、列表的增删改查

1、列表查操作

a)、列表中元素的索引

 列表中的每个元素都有两个整数类型的索引

  0  1  2  3  4   正数索引

--------------------------

| a | b | c | d | e |    列表

--------------------------

 -5  -4  -3  -2  -1   负数索引

b)、获取列表中指定元素的索引

● index方法

查找元素的指定索引,如果索引不存在会抛出值错误。可以指定查找索引的start和stop。

L = [1,2,6,9,4,6,7] print (L.index(2))  # 1 print (L.index(6))  # 2  相同元素返回第一个元素的索引 print (L.index(11)) #ValueError: 11 is not in list 不存在的元素,会抛出值错误 print (L.index(2,0,5)) # 1 查找元素2的索引,从索引0开始,至5结束,但不包含5 print (L.index(6,3,6)) # 5 查看元素6的索引,从索引0开始,至6结束,但不包含6

c)、使用[n]获得列表中元素,但一次只能获得一个元素

L = [1, 2, 6, 9, 4, 6, 7] print (L[0])  # 1  获取索引为0的元素 print (L[-3]) # 4  获取索引为-3的元素 print (L[-8]) #IndexError: list index out of range 如果索引不存在,则索引越界错误。

d)、使用切片或者列表中的元素,一次获得多个元素

● 语法格式 [start:stop:step]

1、得到的切片仍然是列表,是原始列表片段的一份拷贝

2、得到的切片不包括索引stop对应的元素

3、如果不指定step,其默认值为1,此时语法格式可以简化为[start:stop]

4、当step为正数时,

  如果不指定start,切片的第一个元素默认为列表的第一个元素

  如果不指定stop,切片的最后一个元素默认是列表的最后一个元素

  从索引start开始计算切片

5、当step为负数时,

  如果不指定start,切片的第一个元素默认是列表的最后一个元素

  如果不指定stop,切片的最后一个元素默认为列表的第一个元素

  从索引start开始往前计算切片

L = [5,6,3,1,9,8,4] print (L[1:5]) # [6, 3, 1, 9] print (L[::])  # [5, 6, 3, 1, 9, 8, 4] 列表所有值 print (L[::-1]) # [4, 8, 9, 1, 3, 6, 5] 列表所有值反转 print (L[:3:-1]) #[4, 8, 9] step为负数时,不指定start,则为最后一个元素,stop为3则是索引3,步长为1 print (L[-3::-1]) #[9, 1, 3, 6, 5] step为负数时,不指定stop,则为最后一个元素,start为索引-3对应的值,步长为1

● 索引切片是允许越界的

L = [5, 6, 3, 1, 9, 8, 4] print (L[:100]) #[5, 6, 3, 1, 9, 8, 4] #起始索引不指定,默认为第一个元素.但100超出大索引,则打印全部列表 print (L[-100:]) #[5, 6, 3, 1, 9, 8, 4] #结束索引不指定,默认为最后一个元素,起始索引为-100(-7最后一个负数索引),打印全部列表

● 调用slice构造方法

slice() list[slice(start,stop,step)] L = [5, 6, 3, 1, 9, 8, 4] print (L[slice(1,5,2)]) # [6, 1] print (L[1:5:2]) # [6, 1] print (L[slice(None,None,None)]) #[5, 6, 3, 1, 9, 8, 4],默认值为None print (L[::]) #[5, 6, 3, 1, 9, 8, 4]

e) 、'in' or 'not in'检查元素是否存在列表中

L = [5, 6, 3, 1, 9, 8, 4] in print (3 in L) #存在则为True True print (11 in L) #不存在为False False not in print (1 not in L) 1存在列表中,not in返回为False False print (11 not in L) 11不存在列表中,in返回为True True

2、列表增操作

a)、使用append()函数

''' append()方法,在末尾添加值 ''' L = [1,2,3,4] L.append(5) print (L) #[1, 2, 3, 4, 5] L.append([7,8]) print (L) #[1, 2, 3, 4, 5, [7, 8]]

b)、使用extend()方法,将所有元素依此添加至末尾

''' 调用extend方法,list.extend([])小括号中是方括号 ''' L = [1,2,3,4] L.extend([1,2]) print (L) [1, 2, 3, 4, 1, 2]

c)、调用insert方法

''' 调用insert方法,将值插入指定位置 ''' L = [1,2,3,4] L.insert(1,6) print (L) #[1, 6, 2, 3, 4] #在列表末尾 L.insert(len(L),10) print (L) #[1, 6, 2, 3, 4, 10]

d)、为指定的切片赋予一个新值

L = [2,3,4,1] L[2:2] = [5,6] print (L) L = [2,3,4,1] L[len(L):] = [7,8] print (L)

3、列表改操作

想要修改列表中的元素,有两种常见的方式

a)、为指定索引的元素赋予一个新值(一次只修改一个元素)

''' 将索引为1对应的元素值改为9,一次只修改一个值 ''' L = [3,2,0,1,2,1] L[1] = 9 print (L) [3, 9, 0, 1, 2, 1]

b)、指定多个索引,一次修改多个元素

''' 修改元素索引1:4的值,对应值要使用[] 左边取得的索引值可以和右边赋予的值个数不相同 ''' L = [3,2,0,1,2,1] L[1:4] = [4,5,6] print (L) [3, 4, 5, 6, 2, 1] L[1:4] = [3,7] print (L) [3, 3, 7, 2, 1] L[2:3] = [9] print (L) [3, 3, 9, 2, 1]

4、列表删操作

a) 、调用方法remove一次只删除一个元素,如果有相同元素,则删除第一个

L = [2,3,4,5,6] L.remove(3) print (L) L = [3,4,3,1,2] L.remove(3) print (L)

b)、调用方法pop,一次只删除一个指定索引的元素。

如果指定的索引不存在,会抛出index error,索引越界。如果不指定pop删除的索引,那么将删除列表中最后一个元素。

L = ['a','b','c','d','e'] print (L.pop(1)) # b,pop实际有返回值 print (L) # ['a', 'c', 'd', 'e'] print (L.pop()) print (L) #['a', 'b', 'c', 'd']

c)、使用del语句,一次至少删除一个或多个元素

L = [1,2,3,4,5,6] del L[1] print (L) del L[1:3] print (L)

d)、给指定的切片赋值一个空列表,一次至少删除一个或多个元素

L = [1,2,3,4,5,6,7,8] L[2:3] = [] print (L) #[1,2,3,5,6,7,8] L[3:6] = [] print (L) ##[1,2,3,8]

e)、调用方法clear清空列表

L = [1,2,3,4,5] L.clear() print (L) #[]

四、使用加法和乘法对列表进行操作

1、使用加法对列表进行操作,当使用+=运算符时候会对列表本身产生影响

L1 = [1,2] L2 = [3,4] L3 = L1 + L2 print (L1,L2,L3) #列表之间相加 [1, 2] [3, 4] [1, 2, 3, 4] L1 = L2 = [1,2] L1 += [3,4] print (L1,L2) #使用+=运算符会对L2也产生影响 [1, 2, 3, 4] [1, 2, 3, 4] L1 = [1,2] L2 = L1[:] L1 += [3,4] print (L1,L2) #[1, 2, 3, 4] [1, 2]

2、使用乘法对列表进行操作,使用*=运算符时候会对列表本身产生影响

L1 = [1,2,3] L2 = [4,5,6] L1 = L1 * 2 print (L1) #[1, 2, 3, 1, 2, 3] L1 = L2 = [1,2] L1 *= 2 print (L1,L2) #[1, 2, 1, 2] [1, 2, 1, 2] L1 = [0] L1 *= 5 print(L1) #[0, 0, 0, 0, 0] 可用于创建指定元素个数的列表

五、列表反转

1、调用方法 reverse,对列表中所有元素进行反转

L = [1,2,3,4,5] L.reverse() print (L)

2、调用内置函数reversed,使用reversed进行反转的列表不发生改变,reversed返回值是一个迭代器对象

L = [1,2,3,4,5] L1 = reversed(L) print (L1)  # print (list(L1)) #[5, 4, 3, 2, 1]

六、列表的排序

1、调用方法sort()

#sort(),会对列表本身造成影响 L2 = ['java','python','shell'] L2.sort(key = len) print(L2)  #根据字符串长度进行排序,['java', 'shell', 'python'] L2 = [1,3,4,2,6,9,8,7] L2.sort() print(L2) #[1, 2, 3, 4, 6, 7, 8, 9]

2、调用内置函数sorted()

sorted(),不会对列表本身造成影响 L2 = ['java','shell','python'] print(sorted(L2,key = str.upper)) #['java', 'python', 'shell'] L2 = [1,3,4,2,6,9,8,7] print(sorted(L2)) #[1, 2, 3, 4, 6, 7, 8, 9] print(L2) #[1, 3, 4, 2, 6, 9, 8, 7]

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


文章题目:Python中的列表-创新互联
当前URL:http://cdkjz.cn/article/djecoi.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220