Python学习3——列表

时间:2023-02-07 00:30:49

Python内置数据结构:列表,元组,字典,集合。

列表(list)是一组数值的组合,列表元素可以是任何类型(包括列表)。

>>> xx = ['Toney',20,11-6,[1,2]]   #包括字符串,整数,列表

>>> xx

['Toney', 20, 5, [1, 2]]

操作列表包括:索引(indexing)、切片(sliceing)、加(adding)、乘(multiplying)以及检查某个元素是否属于序列的成员。

 

List的索引

列表的索引就是列表的排序,列表从左到右元素索引递增,第一个元素的索引是0,列表元素是n个,最后一个元素的索引就是n-1。

>>> 'Toney'[2]

'n' 

列表的负索引从右往左计数,最后一个元素的索引是-1,倒数第二个元素索引是-2

>>> 'Toney'[-1]

'y'

>>> 'Toney'[-2]

'e'

还可以这样:

>>> fourth = input('year:')[3]

year:2019

>>> fourth

'9'

修改索引为0的元素值:

>>> aa = ['a','b','c']

>>> aa[0] = 1

>>> aa

[1, 'b', 'c']

 

 

列表的切片

索引可以访问列表的某一个元素,切片可以访问列表一段范围的元素。如:months[4:9],4是切片的开始索引,9是结束索引,中间用冒号隔开。

>>> months = [

'January','February','March',

'April','May','June',

'August','September','October',

'November','December']

>>> months[4:9]

['May', 'June', 'August', 'September', 'October']

>>> test = '1234567890abcdefg'

>>> test[8:-2]

'90abcde'

还可以有另外一种,起止索引可以缺失,冒号左边缺失表示从[0]开始取值,冒号右边缺失表示取后面全部。

>>> months[:]

['January', 'February', 'March', 'April', 'May', 'June', 'August', 'September', 'October', 'November', 'December']

>>> months[:3]

['January', 'February', 'March']

>>> months[7:]

['September', 'October', 'November', 'December']

 

列表可以合并在一起:

>>> aa = ['a','b','c']+3*['d']+['f']

>>> aa

['a', 'b', 'c', 'd', 'd', 'd', 'f']

 

 判断是否是列表元素

>>> 'a' in ['a','b']

True

>>> users = ['aaa','bbb','ccc']

>>> input('你的名字:') in users

你的名字:bbb

True

 

遍历列表元素:for x in list:(后面跟的是冒号)

>>> for x in months[3:9]:

print(x)

April

May

June

August

September

October

 

设置步长:

>>> num=[1,2,3,4,5,6,7,8,9]

>>> num[0:9:1]    #步长为1

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

>>> num[0:9:2]    #步长为2

[1, 3, 5, 7, 9]

>>> num[0:9:3]     #步长为3

[1, 4, 7]

 

删除列表

删除整个列表:

>>> num=[1,2,3,4,5,6,7,8,9]

>>> del num

>>> num

Traceback (most recent call last):

  File "<pyshell#204>", line 1, in <module>

    num

NameError: name 'num' is not defined

 

删除列表元素:

>>> num=[1,2,3,4,5,6,7,8,9]

>>> del num[0]

>>> num

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

>>> del num[2:4]

>>> num

[2, 3, 6, 7, 8, 9]

 

列表推导式:

>>> even = [2 * i for i in range(10)]

>>> even

[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

生成even的过程是把0~10之间的数字都乘以2变成偶数。

 

>>> even2 = [i for i in range(20) if i%2 == 0]

>>> even2

[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

生成even2的过程是从0-20之前挑选出偶数。

 

列表的内置函数

len()计算列表的长度(元素个数):

>>> len([1,2,3])

3

>>> num = [i for i in range(10)]

>>> len(num)

10

 

min()返回列表元素中的最小值。

>>> min(['b','c','d'])

'b'

>>> min([5,6,7])

5

 

max()返回列表元素中的最大值,列表元素必须是同一类型且可比较,比如都是数字型的,或都是字符串。

>>> max([1,2,3])

3

>>> max(['b','c','d'])

'd'


sum()计算列表所有元素的和,其元素类型必须是数值型的(整数、浮点数)。

>>> sum([3,4,5.55])

12.55

 

sorted()返回一个排序的列表,但并不改变原列表。

>>> sorted([5,2,7,1,4,6,3,9,8])

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

>>> sorted(['d','a','f','b','c'])

['a', 'b', 'c', 'd', 'f']

 

list()生成一个空列表,或把其它类型数据转换成list。

>>> list()

[]

>>> list('hello')

['h', 'e', 'l', 'l', 'o']

 

切片赋值

>>> xx = list('123')

>>> xx

['1', '2', '3']

>>> xx[:1] = list('abc')    #将索引为1之前的元素赋值

>>> xx

['a', 'b', 'c', '2', '3']

 

1.append()把一个元素加到列表的尾部。

>>> x = ['a','d','c']

>>> x.append('b')

>>> x

['a', 'd', 'c', 'b']

 

2.insert()把一个元素加到列表的特定位置。

>>> x = ['a','d','c']

>>> x.append('b')

>>> x

['a', 'd', 'c', 'b']

>>> x.insert(2,'b')   #将‘b’插入到索引2的位置

>>> x

['a', 'd', 'b', 'c', 'b']

 

3.remove()删除第一个出现的元素‘b’

>>> x = ['a', 'd', 'b', 'c', 'b']

>>> x.remove('b')

>>> x

['a', 'd', 'c', 'b']

 

4.pop()删除并返回某个位置(索引)的元素

>>> x = ['a', 'd', 'b', 'c', 'b']

>>> x.pop(1)      

'd'

>>> x

['a', 'b', 'c', 'b']

 

5.index()返回遇到的第一个某值的索引,如果列表不包含该值则抛出错误

>>> x = ['a', 'd', 'b', 'c', 'b']

>>> x.index('b')

2

>>> x.index('g')

Traceback (most recent call last):

  File "<pyshell#19>", line 1, in <module>

    x.index('g')

ValueError: 'g' is not in list

 

6.count()返回列表中某值的个数

>>> x = ['a', 'd', 'b', 'c', 'b']

>>> x.count('b')

2

>>> x.count('a')

1

 

7.sort()对列表进行排序

>>> x = ['a', 'd', 'b', 'c', 'b']

>>> x.sort()

>>> x

['a', 'b', 'b', 'c', 'd']

 

高级一点的排序,sort方法接受两个可选参数:key和reverse.

根据长度对元素进行排序,将参数key设置为函数len.

>>> x = ['abcg','axdwdge','sev','aidge']

>>> x.sort(key=len)

>>> x

['sev', 'abcg', 'aidge', 'axdwdge']

 

只要将reverse指定为一个真值(True或False):

>>> x=list('davgslicb')

>>> x

['d', 'a', 'v', 'g', 's', 'l', 'i', 'c', 'b']

>>> x.sort(reverse=True)        #按照相反的熟悉对列表元素进行排序

>>> x

['v', 's', 'l', 'i', 'g', 'd', 'c', 'b', 'a']

>>> x.sort(reverse = False)

>>> x

['a', 'b', 'c', 'd', 'g', 'i', 'l', 's', 'v']

 

8.reverse()将列表倒置

>>> x = ['a', 'd', 'b', 'c', 'b']

>>> x.reverse()

>>> x

['d', 'c', 'b', 'b', 'a']

 

9.extend方法可以在列表的末尾一次性追加另一个序列中的多个值

>>> x = ['a', 'd', 'b', 'c', 'b']

>>> y = [1,2,3]

>>> x.extend(y)

>>> x

['a', 'd', 'b', 'c', 'b', 1, 2, 3]

 

10.copy()方法可以复制列表。

常规复制:

>>> a = list('abcdefg')   

>>> a

['a', 'b', 'c', 'd', 'e', 'f', 'g']

>>> b = a

>>> b[0]='k'

>>> a

['k', 'b', 'c', 'd', 'e', 'f', 'g']

上面这种复制,a和b指向的是同一个列表,修改b列表的值,a列表的值对应也会改变。让a和b指向不同的列表,必须让b关联到a的副本。

>>> a = [1,2,3]

>>> b = a.copy()

>>> b[1]=7

>>> a

[1, 2, 3]