0
点赞
收藏
分享

微信扫一扫

数据类型——列表

夜空一星 2022-03-17 阅读 35

列表[](使用最频繁的数据类型)

一、列表基本知识

  1. 定义

列表(list),是用方括号[]括起来的一种数据结构,元素和元素之间用逗号分隔,列表中的元素是可以进行增删查改等一系列操作的,列表通常这样表示:

列表名 = [元素1,元素2,元素3]

命令:列表用[]定义,数据之间使用,分隔

特点:list(列表)是Python中使用最频繁的数据类型,在其他语言中通常叫做数组,专门用于存储一串信息(存放多个数据,数据可以是任意类型)

索引:索引就是数据在列表中的位置编号,索引又可以被称为下标,列表的索引从θ开始。注意:从列表中取值时,如果超出索引范围,程序会报错。

作用:列表可以⼀次性存储多个数据,且可以为不同数据类型。程序员可以对这些数据进⾏的操作有:增、删、改、查。

二、列表基本操作

前言:从建、增、删、查、改5个维度来学习列表。

说明:In[]:表明为输入的代码,编写代码时不需要书写,Out[]同理为输出结果;

2.1. 建

建:创建和访问列表。

  1. 列表中的数据没有类型的限制,可以是数值型也可以是字符型,还可以混搭。新建一个列表i_list,列表中的数据是数值型。
In [1]:#新建一个列表
       i_list = [2,5,8]
       i_list
Out[1]:[2,5,8]
  1. 可以用type函数查看一个列表的数据类型,可以看到i_list列表的类型为list
In [2]:type(i_list)
Out[2]:list
  1. 新建一个字符型的列表s_list,里面存储字符
In [3]:s_list = ["a","b","c"]
       s_list
Out[3]:["a","b","c"]
  1. 新建一个混搭型的列表,h_list,既有数值又有字符
In [4]:h_list = [1,"a",2,"b"]
       h_list
Out[4]:[1,"a",2,"b"]

2.2.增

增的意思是在列表中增加元素,或在列表中增加列表。

2.2.1. 列表中增加元素

2.2.1.1. 末尾插入
  1. append方法用来在末尾插入新元素,如对i_list列表后边追加一个值10.
In [5]:# 末尾追加
       i_list.append(10)
       i_list
Out[5]:[2,5,8,10]
2.2.1.2. 指定位置插入
  1. insert方法则可以在指定位置插入新元素,如在s_list列表中第2个位置插入“s”字符,需要注意的是,insert(位置,值),意思是在哪一个位置插入什么值,第一个位置是0,第二个位置是1,因此这里是(1,“s”)
In [6]:# 指定插入
       s_list.insert(1,"s")
       s_list
Out[6]:["a","s","b","c"]

2.2.2. 列表中增加列表

  1. 俗称列表合并,可以用”+”号操作符,如将i_list与s_list两个列表合并在一起,就是纯粹地连接在了一起。
In [7]:i_s = i_list + s_list
       i_s
Out[7]:[2,5,8,10,"a","s","b","c"]
  1. 也可以使用extend方法,a.extend(b),意思是把b列表合并到a列表中,效果是一样的,只不过现在i_list列表就变了,不是单纯的数值型列表了。
In [8]:i_list.extend(s_list)
       i_list
Out[8]:[2,5,8,10,"a","s","b","c"]

2.3.删

列表中元素的删除,可以根据元素值删除,也可按索引删除。

  1. remove方法是根据元素删除,指定要删除的元素的值,一次只能删除一个值,如现在删除s_list列表中的“s”字符。
In [9]:s_list.remove("s")
       s_list
Out[9]:["a","b","c","d"]
  1. pop方法是按照索引删除,即指定要删除字符所在的位置,如删除i_list列表中10这个值,已知10是该列表中的最后一位
In [10]:i_list.pop(-1)
        i_list
Out[10]:[2,5,8]
  1. 以及del函数,永久删除,效果一样,不同的是一个是python中的函数,一个是面向对象的方法。
In [11]:del i_list[-1]
        i_list
Out[11]:[2,5,8]

2.4.查

查的意思是查找某个元素是否在列表中,以及通过索引访问该元素。

2.4.1 查找某个值是否在列表中

可以使用in操作符来查找一个值是否在列表中,返回的结果是逻辑值True/False,这个在之前数据类型中写到过的字符串查找用in的方法是一样的,如查找5是否在i_list列表中。

In [12]:5 in i_list
Out[12]:True

2.4.2 查找列表中指定位置的值

查找列表中指定位置的值,也就是通过索引来访问该元素。列表是有序的,每一个元素都有其特定的索引,可以使用索引和切片来查找列表中某位置的值。如获取s_list列表中第3个位置的值,得到字符“c”,再来复习一下索引,从0开始递增,那么a的位置是0,b是1,c就是2.

In [13]:s_list
Out[13]:["a","b","c","d"]
In [14]:s_list[2] #获取第3位的值
Out[14]:'c'

取第3位及以后位置的值,就要切片了,:是指所有的值,2:是指从第3位开始,包括第三位以后所有的值。

In [15]:s_list[2:] #获取第3位及以后的值
Out[15]:['c','d']

2.5.改

对列表中元素的值进行修改,直接查找到位置后赋值即可,就是这么简单粗暴。如对s_list列表中的第一个值,改成大写的A。

In [16]:s_list[0] = "A"
        s_list
Out[16]:["A","b","c","d"]

可选地,对列表的操作还有排序、复制、计数等,可以看一下。

2.6.排序

sort方法,默认升序,降序需添加reverse = True参数。

In [17]:#升序
        s_list.sort()
        s_list
Out[17]:["A","b","c","d"]
In [18]:#降序
        s_list.sort(reverse = True)
        s_list  
Out[18]:["d","c","b","A"]

2.7. 复制

copy方法复制列表,如将s_list列表复制一份,则得到它的副本,可以在它的副本基础上做修改。

In [19]:s_list.copy()
Out[19]:["d","c","b","A"]

2.8.求列表长度

用len函数求列表长度,如求s_list列表的长度,得到4,里面有4个元素。

In [20]:len(s_list)
Out[20]:4

2.9.计数

计数用来统计列表中元素出现的次数,用count方法,如统计t_list列表中元素c出现的次数,结果为1,表示出现了1次。

In [21]:s_lisr.count("c")
Out[21]:1

总结

新建列表:

[1,2,3,4]

[“a”,“b”,“c”,“d”]

增加元素:append(末尾) / insert(指定位置)

增加列表:extend

删除元素:remove(按值) / pop(按位置)

查找元素:

in

索引+切片

修改元素:查找后赋值

排序:sort

复制:copy

长度:len

计数:count
————————————————

三、题目

题目1 [加强训练]

题干

有一个列表,判断列表中的每一个元素是否以s或e结尾,如果是,则将其放入一个新的列表中,最后输出这个新的列表

list = ["red", "apples", "orange", "pink", "bananas", "blue", "black", "white"]

训练目标

让学员知道列表的循环和值的获取,以及列表的操作方法

训练提示

  1. 如何找到列表中的每一个元素?
  2. 如何判断列表中的元素以什么字符结尾?

参考方案

  1. 使用循环遍历的方式获取列表中的每一个元素?
  2. 列表中的元素为字符串,所以可以使用下标[-1] 来获取最后一个字符的值,然后判断.

操作步骤

  1. 遍历列表中的每一个元素
  2. if 判断 最后一个字符是否是s或者e
  3. 如果是,使用 append() 方法,将数据追加到新的列表中.

参考答案

my_list = ["red", "apples", "orange", "pink", "bananas", "blue", "black", "white"]

# 用来存放以e或者s结尾的字符串
new_list = []

for i in my_list:
    # 判断列表中每一个元素是否以s或e结尾
    if i[-1] == 's' or i[-1] == 'e':
        new_list.append(i)

# 打印出这个新的列表
print(new_list)

方法二:

my_list = ["red", "apples", "orange", "pink", "bananas", "blue", "black", "white"]

# 用来存放以e或者s结尾的字符串
new_list = []

for i in my_list:
    # 判断列表中每一个元素是否以s或e结尾
    if i.endswith('s') or i.endswith('e'):
        new_list.append(i)

# 打印出这个新的列表
print(new_list)

题目2 [加强训练]

题干

给定一个列表,首先删除以s开头的元素,删除后,修改第一个元素为"joke",并且把最后一个元素复制一份,放在joke的后边

my_list = ["spring", "look", "strange", "curious", "black", "hope"]

训练目标

列表的相关操作

训练提示

  1. 通过for循环遍历列表,获取到每一个元素
  2. 通过列表的操作方法对列表进行修改

参考方案

  1. 通过for循环获取每一个元素
  2. 通过remove删除列表中的元素
  3. 通过insert函数在指定位置插入元素

操作步骤

  1. 通过for循环获取每一个元素,判断是否以s开头
  2. 如果条件成立,则通过remove删除选中的元素
  3. 获取到最后一个元素,通过replace将元素放在指定的位置上

参考答案

my_list = ["spring", "look", "strange" "curious", "black", "hope"]

for i in my_list[:]:
    # 删除以s开头的元素,
    if i[0] == 's':
        my_list.remove(i)

# 修改第一个元素为"joke"
my_list[0] = "joker"

# 获取最后一个元素
last_one = my_list[-1]

# 将最后一个元素放在joke的后面
my_list.insert(1, last_one)

print(my_list)

题目3 [加强训练]

题干

将下列两个列表合并,将合并后的列表去重,之后降序并输出

list1 = [11,  4, 45, 34, 51, 90]
list2 = [4, 16, 23, 51, 0]

训练目标

列表操作方法的使用

训练提示

  1. 如何合并两个列表?
  2. 如何进行列表去重?
  3. 如何排序并降序输出?

参考方案

  1. 合并列表可以使用 extend()方法或者两个列表相加。
  2. 列表去重有两种方案
  3. 自己实现方法实现,借助一个新的列表,循环遍历原列表,判断元素是否在新的列表中,如果在,遍历下一个元素,如果不在,添加到新的列表中。
  4. 使用 set() 集合去重
  5. sort 函数可以实现排序,参数reverse=True对列表进行倒序排序

操作步骤

1,使用 + 对列表进行拼接(或者使用 extend)
2,列表去重
3,使用sort函数,参数reverse=True对列表进行倒序排序

参考答案

方案 1

list1 = [11, 4, 45, 34, 51, 90]
list2 = [4, 16, 23, 51, 0]

# 1. 使用 + 合并两个列表
my_list = list1 + list2

# 2. 列表去重
# 2.1 定义新的空列表保存去重后的数据
my_list1 = []
# 2.2 遍历合并后的列表
for i in my_list:
    # 2.3 判断i 是否在my_list1 中
    if i in my_list1:
        # 2.3.1 如果存在,直接下一次循环
        continue
    else:
        # 2.3.2 将i添加到my_list1 中.
        my_list1.append(i)

# 3. 循环结束,得到去重后的列表 my_list1,进行排序
my_list1.sort(reverse=True)

# 4. 输出最后的结果
print(my_list1)

方案 2 暂时不用管后边会学习

list1 = [11, 4, 45, 34, 51, 90]
list2 = [4, 16, 23, 51, 0]

# 列表拼接
list3 = list1 + list2

# 列表去重
list4 = set(list3)
list5 = list(list4)

# 列表降序输出
list5.sort(reverse=True)

print(list5)
举报

相关推荐

0 条评论