人生苦短,我学python之列表(上)

个人主页:星纭-CSDN博客

系列文章专栏:Python

踏上取经路,比抵达灵山更重要!一起努力一起进步!

目录

1.列表的定义

2.列表的下标

 3.列表的元素访问与删除

4.eval()函数

5. 列表元素的增加

1.append()函数

2.insert()函数

3.extend()函数

 6.列表元素的删除

1.del语句

2.pop()函数 

3.remove()函数 

4.clear()函数


1.列表的定义

什么是列表呢?

学过C的读者可以初步将其理解为跟数组类似,但是又不同于数组,列表的功能远超数组。学完列表之后,你一定会被列表的功能震惊的。

通过前面的学习,我们知道如果我们要存储数据时,比如a=10,可是如果存在一系列的数据的时候,我们就要定义不同的变量来进行存储,这多少是有些不便利的,如何存储多个数据呢?

我们这篇文章的要讲的列表就可以做到。

假设我们要存储1-12月份。

months = ['January', 'February', 'March', 'April', 'May',
          'June', 'July', 'August', 'September', 'October', 'November', 'December']
print(months)

运行上面的代码就会打印出1-12月了。注意这里由于一行太长了,所以换行了,列表换行时下一行的第一个元素要和第一个元素对齐,比如January和June.

 列表(list)是容纳一系列数据的容器。

 它的借助于方括号[  ]定义,每个数据之间使用逗号隔开。

列表的创建有两种方式:

  1. 使用[  ]来创建,[ ]表示一个空列表,在创建列表的时候,在[]中指定列表的初始值
    a = []
    print(type(a))

    元素之间用    来进行分隔。

  2. 使用list()函数来进行创建,只不过这也的创建方式会将()中的参数的每一个字符都当作元素。
    b = list()
    print(type(b))

2.列表的下标

列表的中的元素是存在先后位置关系的(后面有一个没有顺序的数据类型)。 在python中,列表是一种与int float str并列的数据类型。

列表中的元素是从0开始编号的,我们将这个编号称为下标或者索引(index)。比如上述代码中的12月下标是11.因为下标从0开始。

对于没有了解过其他语言的读者可能不太理解为啥从0开始。

下标从0开始,而不是从1开始,这是大多数程序设计语言的习惯。(可以看看C语言的解引用和下标访问操作符)。

对于列表来说下标是不能超出范围的。

a = [1, 2, 3, 4, 5]
for i in range(-5, 5):
    print(a[i], end=' ')

我们知道len()函数可以求字符串中字符的个数,len()函数也可以求列表元素的个数。 

列表下标的范围就是[-len(a), len(a))。注意这里是前闭后开区间。0到len(a)-1其实容易理解。那这里的负数是什么意思呢?

-1是倒数第一个元素,-2就是倒数第二个元素,-len(a)就是第一个元素。

 如果超出范围就会报一个错误

IndexError: list index out of range

意思是下标错误,列表下标超出范围。

 3.列表的元素访问与删除

列表中的元素是可以进行更改的,这方便了我们的使用,如果需要更改其中一个值就不需要重新创建一个列表了。

a = [1, 2.50, 'hello', 'world']
print(a)
a[0] = a[3]
print(a)

列表是可以同时存储不同的数据类型的。 

这与数组不同,python的动态数据类型有此关。

python的通过下标访问元素有两种序号体系,一个是正向的递增序号(0-len(a) - 1),另一个是反向递减序号(-len(a) - -1)。

修改元素,只需要通过下标访问操作符[]来找到你要修改第几个元素,再通过赋值操作符将要改的值赋给它即可。

4.eval()函数

eval()函数是python中的一个内置函数,这个函数的作用是返回传入的字符串的表达式的结果。具体来说,eval() 函数会执行传递给它的字符串中的 Python 表达式,并返回该表达式的结果。这样可以动态地执行字符串中的代码。

print('1 + 2')
print(eval('1 + 2'))

 传入的参数是'1 + 2'这明显是一个字符串,如果只是单纯地打印是得不到3的,而eval()函数会将其转化为表达式并返回表达式的结果,所以会打印3.

a = '1 + 2'
b = eval(a)
print(b, type(b))

我们会发现b的类型是int了,这就是计算后的结果。

 除了将字符串转化为数值进行计算之外,eval函数还可以将字符串转化为列表。

my_list1 = list("[1, 2, 3, 4, 5]")
print(my_list1)  # 输出:['[', '1', ',', ' ', '2', ',', ' ',
#                        '3', ',', ' ', '4', ',', ' ', '5', ']']
my_list2 = eval("[1, 2, 3, 4, 5]")
print(my_list2)  # 输出:[1, 2, 3, 4, 5]

int()可以将参数转化为int类型,str()函数可以将参数转化为字符串,同理list函数也可以将参数转化为列表,但是这样的得到的列表可能与我们需要的有所不同,它会将每一个字符都当作列表中的元素。我们做题的时候可能会遇到一些输入要求并不是只输入列表元素,而是【1,2,3,4,5】这样的输入列表,如果不采用eval函数我们得到列表元素就会很麻烦。 

当然除了上述两种用法之外还有很多,比如将字符串转化为字典以及动态执行函数等等。以后我们再了解。

需要注意的是,eval() 函数在执行字符串中的代码时具有一定的风险。如果从不受信任的来源获取字符串并将其传递给  eval() 函数,可能会导致安全隐患。因此,在使用eval() 函数时应谨慎,确保字符串的来源是可信的。

与eval函数类似的函数有int(),eval函数和int()函数都可以用来将字符串转化为整数,那么二者有什么不同呢?

evalint
eval函数可以执行任意有效的Python表达式,并返回其结果。因此,eval函数可以识别并处理包含算术运算符、逻辑运算符和函数调用等内容的字符串,并返回计算结果。而int()函数只能将包含数字的字符串转化为整数,不支持其他运算。
eval函数可以处理包含变量的字符串,并根据当前环境中变量的值进行计算。例如,eval('x + 2')会将字符串"x + 2"中的变量x替换为当前环境中x的值,并返回计算结果。而int()函数只能处理不包含变量的字符串。
eval函数具有一定的风险,因为它可以执行任意有效的Python表达式,包括可能具有潜在危险的表达式。因此,在使用eval函数时需要注意安全性,并避免执行未知或不可信的字符串。而int()函数只能将满足整数格式要求的字符串转化为整数,较为安全。
eval函数更为灵活,但需要谨慎使用int()函数更为简单和安全

5. 列表元素的增加

a = [1, 2, 3, 4, 5]

如果你使用的pycharm写python代码。当你输入了列表名加  .  后,会出来很多跟列表有关的函数。

其中与元素的增加有关的函数有三个。 

1.append()函数

append的中文意思是追加,附加。用于在列表的尾部添加数据。

它的括号中的参数就是你要添加的元素。 

a = [1, 2, 3, 4, 5]
print(a)
a.append(6)
print(a)

输出结果:

2.insert()函数

insert意思是插入,用于在指定位置插入数据。

它的参数有两个,第一个是下标,第二个是要在此下标位置处插入的元素。

a = [1, 2, 3, 4, 5]
a.insert(2, 0)
a.insert(5, 6)
print(a)

下标位置以及后面的所有的元素均会往后移动一个位置,再放入要插入的数据。

需要注意的是:如果下标超出了索引范围,就会抛出异常,比如要在列表尾部添加数据就要用用到append函数

3.extend()函数

这个函数并不是单纯放入元素了,而是追加一个列表。 

a = [1, 2, 3, 4, 5]
a.extend(a)
print(a)

输出结果: 

它的参数是一个列表,即使是只有一个元素也要写成列表。

在python中,我们知道+操作符是可以完成字符串的相加的,同理+也可以用于列表的相加。既然有+为什么还需要extend呢?二者肯定有所区别。

  1. extend函数是一个列表方法,用于将另一个列表的元素添加到调用extend方法的列表中。它会直接修改调用它的列表,不会创建新的列表。示例如下:
    list1 = [1, 2, 3]
    list2 = [4, 5, 6]
    list1.extend(list2)
    print(list1)  # 输出 [1, 2, 3, 4, 5, 6]
     
    
  2. "+"操作符用于连接两个序列,并返回一个新的序列,其中包含这两个序列的所有元素。它不会修改原始的序列。示例如下:
    list1 = [1, 2, 3]
    list2 = [4, 5, 6]
    new_list = list1 + list2
    print(new_list)  # 输出 [1, 2, 3, 4, 5, 6]
    print(list1)  # 输出 [1, 2, 3]
     
    
  3. 当需要修改原始列表时,可以使用extend函数。如果只是需要连接两个序列生成一个新的序列,可以使用"+"操作符。选择使用哪种方法取决于具体的需求和使用场景。

因为不会创建新的列表,所以append的效率也会更高。

 6.列表元素的删除

 Python语言中删除列表元素有4种方式。

1.del语句

a = [1, 2, 3, 4, 5]
del a[1]
print(a)  # 输出[1, 3, 4, 5]

del的全称就是delete,中文删除的意思

使用del语句可以删除任何位置上的列表元素,前提是需要知道索引。

2.pop()函数 

a = [1, 2, 3, 4, 5]
a.pop()  # 返回值5
print(a.pop(1))  # 输出2
print(a)  # 输出[1, 3, 4]

pop()函数的参数是下标, 用于删除该下标位置上的元素,并且返回该元素的值,如果不添加参数,默认情况下参数是-1,删除的是最后一个元素。语法格式为:list.pop(index)。

pop()函数将列表视为一个栈,列表的队尾视为栈顶,所以在无参数的情况下,pop()函数的执行操作就是:1.将列表尾部的最后一个元素弹出,2.并且返回弹出的元素,所以pop函数可以理解弹出某个下标位置上的元素

当index超出列表范围或不是一个合法的整数时,会抛出IndexError异常。

有时候,我们并不知道,元素在列表中的位置,如果要删除的话就需要采用remove函数

3.remove()函数 

 remove()函数的参数就是要删除的元素,它的功能是从列表的起始开始,删除这个列表中的第一个该元素,也就是如果有两个相同的元素,只会删除第一个。

如果该元素不存在这么办呢?

a.remove(元素)
ValueError: list.remove(x): x not in list

此时会发生抛出异常,提示该元素不在列表中。

4.clear()函数

clear函数的功能不是单纯的删除元素,而是删除整个列表的元素,使其变成空列表。

a = [1, 2, 3, 4, 5]
print(a)  # 输出[1, 2, 3, 4, 5]
a.clear()  
print(a)  # 输出[]

评论 16
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值