【第三节】列表

上一节介绍了最常见的两种数据类型 字符串和数字 这一节将介绍列表

列表

首先,什么是列表?列表是由一系列按照特定顺序排列的元素组成,在python中由中括号[ ]定义

  1. 首先列表是一系列的元素,这些元素的种类可以不同,一个列表当中可以同时存在多种数据结构list_=['list1',1,2,'list2',3.14,[1,2,3,4]]
  2. 列表中的元素是有顺序的

列表的可变性

在python当中数据类型可以按照可变数据类型和不可变数据类型两种,上一节学习的两种数据结构都是不可变的 为了验证这个结论 可以执行下面的代码

str1 = 'hahaha'
print(id('hahaha'))
print(id(str1))
print('==='*20)
str1 = 'hehehe'
print(id('hahaha'))
print(id(str1))

【第三节】列表_第1张图片
可以看到,我们虽然改变了str1的值,但是字符串hahaha的id并没有更改
【第三节】列表_第2张图片
这只是变量的指向进行了改变,而不要误认为字符串是可变的数据类型!!!
数字和str一样的道理这里就不举例证明了

那么现在我们需要证明一下列表的可变性

list1 = ['a', 'b', 'c', 'd']
print(id(list1))
list1.pop()  # 删除列表末尾的元素
print(list1)
print(id(list1))

【第三节】列表_第3张图片
我们首先定义了一个列表,当中存放了四个字符串 分别是 a b c d 接着我们打印出了列表1的id,之后我们执行了pop方法(稍后会讲解这个方法) ,我们之后发现这个列表当中的最后一个字符串d被删除掉了,列表发生了改变,但是列表的id没有发生改变,这个说明同一个列表当中的元素是可以变化的!这里的变化包括列表中元素的个数,顺序,类型

列表是有序的

列表当中的元素是有顺序的,但是列表的第一个数据我们称为第零个数据

list1 = ['a', 'b', 'c', 'd']
# a是第0个数据  b是第1个数据  c是第二个数据  d是第三个数据

因此我们想要查看列表当中的元素时,可以使用下标(就是元素在列表当中的位置,记住是从零开始的)

【第三节】列表_第4张图片
当然,我们也可以使用这种下标的方式去修改列表当中的元素:

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

list1[1] = 1  # 将下标为1 就是列表当中的第二个元素 更改为 int类型的数字1
print(list1)

【第三节】列表_第5张图片

修改,增加、删除列表中的元素

修改元素

就如同刚才演示的一样,你可以通过下标去修改列表中的元素

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

list1[1] = 1  # 将下标为1 就是列表当中的第二个元素 更改为 int类型的数字1
print(list1)

添加元素

给列表添加元素主要有两个方法 append方法和insert方法

append方法

append方法可以向元素的末尾添加一个元素

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

list1.append('e') # 向list1的末尾添加了e这个字符串 
print(list1)

insert

append方法是只能在列表的最后添加一个元素,如果我需要在其他位置添加一个元素呢?这时可以使用insert方法,insert方法可以在列表的任何位置添加新元素,所以,你需要传入新元素的位置索引(就是之前所说的下标)和数值

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

list1.insert(1, "我是新来的")
print(list1)

【第三节】列表_第6张图片
我们将 我是新来的 这个字符串 插入到了 lst1列表的下标为1的位置(就是第二个元素)

删除元素

删除元素 这里介绍三种方法 del/pop/remove

del

del可以删除任意位置的元素,前提是得知道需要删除的元素的下标

list1 = ['a', 'b', 'c', 'd']
del list1[0]
print(list1)  # ['b', 'c', 'd']

pop

1 pop是具有返回值的,我们可以用变量接收这个值

list1 = ['a', 'b', 'c', 'd']
str1 = list1.pop()
print('被删除的元素是:{} 现在列表当中还剩下:{}'.format(str1, list1))
# 被删除的元素是:d 现在列表当中还剩下:['a', 'b', 'c']

直接使用pop可以删除最末尾的一个元素,并且将删除的数据返回

当然了pop是可以删除任意位置的元素的,只需要传入对应的下标

list1 = ['a', 'b', 'c', 'd']
str1 = list1.pop(1)
print('被删除的元素是:{} 现在列表当中还剩下:{}'.format(str1, list1))

这里我们删除了下标为1的元素

remove

在一个杂乱的列表当中,如果需要删除列表当中所有的a,我们该怎么办呢?remove方法就可以根据值来删除元素

list1 = ['a', 'b', 'c', 'd']
list1.remove('c')
print(list1)  # ['a', 'b', 'd']

组织列表

sort方法

sort方法可以将列表按照英文字母的顺序进行排序,这个修改顺序是永久性的!

list1 = ['g', 'd', 'a', 'e', 'c', 'f', 'b', ]
list1.sort()
print(list1)
# ['a', 'b', 'c', 'd', 'e', 'f', 'g']

sort方法还接受两个参数key 和reverse,这两个参数不可以不给就像上面演示的一样。

list.sort(key=None,reverse=False)
key -主要用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素 进行排序
reverse - 排序规则 True 降序 False 升序 (默认)

# 先不带key参数的sort函数
li = [[1, 7], [1, 5], [2, 4], [1, 1]]
li.sort()
print(li)  # [[1, 1], [1, 5], [1, 7], [2, 4]] 默认按照 先0维排序,再1维排序


def fun(li):
    return li[1]


li.sort(key=fun)
print(li)  # [[1, 1], [2, 4], [1, 5], [1, 7]] 进行1维排序

sorted方法

这个方法也是进行排序的方法,但是这个不同于sort,sorted方法只是进行临时排序

list_c = [1, 2, 8, 3, 7, 9, 5, 7]
# sorted内置函数会返回一个排序后的新列表
list_d = sorted(list_c)
print("list_c: ", list_c)
print('list_d: ', list_d)

reverse方法

reverse方法直接将列表进行反转

aList = [123, 'xyz', 'zara', 'abc', 'xyz']

aList.reverse()

len方法

len方法可以查看列表的长度

aList = [123, 'xyz', 'zara', 'abc', 'xyz']
print(len(aList))

你可能遇见的坑

下标相关 IndexError

【第三节】列表_第7张图片

这个错误是因为你的下标超出了列表的长度,请谨记下标是从0开始而不是从1开始的

ValueError

【第三节】列表_第8张图片
在使用remove函数时,请确认删除的数值在列表当中,否则会报错

列表是可迭代的

对于什么是可迭代的,目前阶段不需要了解,在后期的博客当中我会介绍,现在我们只需要专注于基础,我们只需要可迭代的意味着可以去for循环遍历
【第三节】列表_第9张图片

list1 = ['g', 'd', 'a', 'e', 'c', 'f', 'b', ]
for i in list1:    #  注意for 循环的写法
    print(i)         #  缩进4个空格  这部分是循环体

关于更多的for循环的内容将在下一章节讲解

你可能感兴趣的:(python零基础入门教学,python,数学建模,开发语言)