程序员初见的Python杂货铺

1.列表的定义及增删改查

2020-11-12  本文已影响0人  見贤思齊_

一、列表

列表由一系列按特定顺序排列的元素组成。我们可以创建包含字母表中所有字母、数字0~9,也可以将任何东西加入列表中,其中的元素之间可以没有任何关系

鉴于列表通常包含多个元素,所以给列表指定一个表示复数的名称(如:names)是一个不错的主意

python中,用方括号[]来表示列表,并用逗号来分隔其中的元素

若是直接打印列表,Python会打印列表的内部表示,包括方括号

二、定义列表

我们创建的大多数列表都将是动态的,这意味着在列表创建之后,将随着程序的运行增删元素

例如:你创建一个游戏,要求玩家射杀小怪兽;为此,可在开始时将一些小怪兽存储在列表中,然后每当有小怪兽被消灭时,都将其从列表中删除,而每次有新的小怪兽出现在屏幕上时,都将其添加到列表中。在整个游戏运行期间,小怪兽列表的长度将不断变化。

1.[]中括号

用中括号括起一堆数据即可,数据之间用逗号隔开

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

(1)创建空列表

不知道要向列表中添加什么数据,也可创建一个空列表。

empty = []

(2)列表中嵌套列表

lis1 = [1,'思齐',155.520,[1,2,2] ]

可以看到上面这个列表包含有: 整型、字符串、浮点型数据、子列表。

2.list()方法

list()方法用于把一个可迭代对象转换为列表

list(iterable)
'''
    功能: 把一个可迭代对象转换为列表.
    
    参数: 
        ① iterable: 可迭代对象。
    
    返回值: 列表。
'''

(1)创建空列表

empty = list()
empty

(2)将字符串中的每个字符迭代存放进列表

a = list('Hero') 
a

(3)将元组中的每个元素迭代存放进列表

b = list( (1,2,3,4,5) )
b

(4)与range()结合生成数字列表

numbers = list(range(1,6))
numbers

三、列表的访问

可以通过元素的索引值(index)从列表中获取单个元素

1.访问列表元素

列表是有序集合,因此想要访问列表的任意元素,只需将该元素的位置或索引告诉Python即可

要访问列表元素,可指出列表的名称,再指出元素的索引,并将其放在方括号内

(1)示例

① 例1
fruits = ['葡萄','草莓','大鸭梨','菠萝']
print(fruits[2])
'大鸭梨'

当我们请求获取列表元素时,Python只返回该元素,而不包括方括号和引号。

此外,还可以对任何列表元素调用一些方法,如title()、uper()等

2.索引

列表索引值从 0 开始。

Python中,凡是顺序索引第一个列表元素的索引为0,而不是1。在大多数编程语言中都是如此,这与列表操作的底层实现相关。因为计算机本身是二进制的,在二进制世界里只有两个数:0 、1,0也就是二进制中第一个数,秉承这个传统,0也就用于表示第一个数。

如果结果出乎意料,请看看你是否犯了简单的差一错误

第二个列表元素的索引为1。依此类推,要访问列表的任何元素,都可将其位置减1,并将结果作为索引(index)

(1)索引为负值

Python为访问最后一个列表元素提供了一种特殊语法。通过将索引指定为-1,可让Python返回最后一个列表元素

这种语法很有用,因为我们经常需要在不知道列表长度的情况访问最后的元素

这种约定也适用于其他负数索引,例如:索引-2返回倒数第二个列表元素,素引-3返回倒数第三个列表元素,以此类推。

① 示例
fruits = ['葡萄','草莓','大鸭梨','菠萝']
fruits[-1]
'菠萝'

3.使用列表中的各个值

可像使用其他变量一样使用列表中的各个值。例如,你可以使用拼接根据列表中的值来创建消息。

animals = ["rabbit","dog","panda","cat"] 
# 使用animals[2]的值生成一个句子,并将其存储在变量message中
message = "My favorite animal is the " + animals[2] + "."   
print(message)
My favorite animal is the panda.

四、修改列表元素

1.修改

修改列表元素的语法和访问列表元素的语法相似。

通过指定列表名和要修改元素的索引值(index)从列表中获取单个元素,再映射1个新值。

fruit = ['葡萄','草莓','大鸭梨','菠萝']
fruit[2] = '大西瓜'
fruit
# ['葡萄', '草莓', '大西瓜', '菠萝']

五、添加

1.append(): 末尾单一元素添加

列表名.append( 想要添加的元素 )

'''
    功能: 向列表中添加元素,**每次只能加一个元素,并且是往列表的末尾添加数据**
        (也可理解为追加、排队增加)。
          Append object to the end of the list.
    
    参数: 想要添加的元素。
    
    返回值: 添加完成后的列表。
'''
① 追加1个元素
num = [1,2,3,4,5]
num.append(6)
num
# 会发现参数 6 被添加到列表的末尾。
② 追加多个元素(可迭代对象)

若是我们直接添加多个元素,Python会向我们报错TypeError: append() takes exactly one argument (2 given),也就是说append()方法1次只能添加一个参数,那么如果我们就想添加多个元素该如何操作?

用可迭代对象进行添加多个元素

Ⅰ.元组
nums = [1,2,3,4,5,6]
nums.append( (7,8) )
print(nums)
'''
    [1, 2, 3, 4, 5, 6, (7, 8)]
'''
Ⅱ.列表
nums = [1,2,3,4,5]
nums.append(["思齊","永远18岁"])
print(nums)
'''
    [1, 2, 3, 4, 5, ['思齊', '永远18岁']]
'''
Ⅲ.字典
nums = [1,2,3,4,5]
nums.append({"姓名":"思齊","年龄":"永远18岁"})
print(nums)
'''
    [1, 2, 3, 4, 5, {'姓名': '思齊', '年龄': '永远18岁'}]
'''
③ 优点

方法append()让动态地创建列表易如反掌,例如,你可以先创建一个空列表,再使用一系列的append()添加元素,因为我们经常要等程序运行后,才知道用户要在程序中存储哪些数据。

为控制用户,可首先创建一个空列表,用于存储用户将要输入的值,然后将用户提供的每一个新值附加到列表中。

2.extend(): 末尾多元素添加

列表名.extend( [元素1,元素2,...] )

'''
    功能: 可向列表中添加多个元素,但是在**列表末尾添加**。
         
    参数: 
        ① 可迭代对象: 将想要添加的元素以 列表 或 元组 形式传入。
                
    返回值: 添加完成后的列表。
'''
① 参数为可迭代对象

一定要注意,extend()的参数是可迭代对象

append()方法一样,如果我们直接在方法的括号里添加多个元素,Python还是会向我们报错TypeError: extend() takes exactly one argument (2 given).extend(iterable, /) method of builtins.list instance Extend list by appending elements from the iterable.,不是说append()可以添加多个元素吗?这是为什么呢?原因就在于extend() 接收可迭代对象。

Ⅰ.传入元组
nums = [1,2,3,4,5]
nums.extend( (9,10) )
print(nums)
'''
    [1, 2, 3, 4, 5, 9, 10]
    向extend()传入一个元组,添加成功。
'''
Ⅱ.传入列表
nums = [1,2,3,4,5]
nums.extend( [7,8] )
print(nums)
'''
    [1, 2, 3, 4, 5, 7, 8]
    向extend()传入一个列表,添加成功。
'''
Ⅲ.传入字典(不可取)
nums = [1,2,3,4,5]
nums.extend( {"姓名":"思齊","年龄":"永远18岁"} )
print(nums)
'''
    [1, 2, 3, 4, 5, '姓名', '年龄']
'''
如果用 + 只是临时添加。

向列表传入一个字典是不可取的,因为会造成数据丢失,从上述结果可看到,只是把键名取出,而键值被省略。

3.insert():任意位置添加

insert(索引,值)

'''
    功能: 可向列表任意位置添加元素。
              
    参数: 
        ① 索引:列表中的位置。 
        ② 值:在这个位置添加什么元素。
    
    返回值: 添加完成后的列表。
'''

insert(index, object, /) method of builtins.list instance.Insert object before index.
① 向列表任意位置添加单个元素
num = [1,2,3,4,5]
num.insert(0,0)
num
② 向列表任意位置添加多个元素
num = [1,2,3,4,5]
num.insert(5,[6,7])
num
# outout: [1, 2, 3, 4, 5, [6, 7]]

num.insert(6,[8,9,10])
num
# outout: [1, 2, 3, 4, 5, [6, 7], [8, 9, 10]]
Ⅰ.多个元素被看作一个整体

其实,insert()方法添加多个元素,并不是实际意义上的添加多个元素,而是添加的多个元素被看成一个整体

六、删除

我们经常需要从列表中删除一个或多个元素。例如:玩家将游戏中的一个小怪兽消灭后,你很可能要将其从存活的小怪兽列表中删除;当用户在你创建的web应用中注销其账户时,你需要将该用户从活跃用户列表中删除。你可以根据位置或值来删除列表中的元素

1.使用del语句删除元素

如果知道要删除的元素在列表中的位置,可使用del语句

del 是一个语句,不是一个列表的方法,所以不需要在 del 后面加上小括号()。

del 加列表名,可以删除整个列表

del 加位置索引,可以删除该位置上的元素

(1)怎么做?

① 删除整个列表
del fruits
② 删除指定位置上的元素
fruits = ['葡萄','草莓','大鸭梨','菠萝']
del fruits[1]   # 删除草莓
③ 连续删除
fruits = ['葡萄','草莓','大鸭梨','菠萝']
del (fruits[1],fruits[2])

# 删除了草莓、菠萝,先删除的是fruits中索引为1的,接着再删除新列表中索引为2的。

(2)永久性删除

使用del语句将值从列表中删除后,你就无法再访问它了。

2.pop():先查出来在删掉,在数据库有用

有时候,你要将元素从列表中删除,并接着使用它的值。

例如:你可能需要获取刚被消灭的小怪兽的x和y坐标,以便在相应的位置显示爆炸效果;在Web应用程序中,你可能要将用户从活跃成员列表中删除,并将其加入到非活跃成员列表中。

方法pop()默认删除列表末尾的元素,并让你能够接着使用它。该术语弹出(pop)就源自这样的类比:列表就像一个栈,而删除列表末尾的元素相当于弹出栈顶元素。

列表名.pop() 或 列表名.pop( 索引值 )

'''
    功能: 默认删除最后一个元素,或删除指定元素。 

    参数: 
        ① 不写值,默认删除最后一个。
        ② 索引值: 加上一个索引值作为参数的时候,会弹出这个索引值对应的元素。     

    返回值: 删除完成后的列表。
'''   
pop(index=-1, /) method of builtins.list instance
            Remove and return item at index (default last).
         Raises IndexError if list is empty or index is out of range.
① 默认删除最后一个
chinas = ['凤凰','麒麟','玄武','白虎','青龙']
a = china.pop()
print(a)
print(china)
'''
    青龙
    ['凤凰', '麒麟', '玄武', '白虎']
'''
② 根据索引值删除
china.pop(3)
china
# ['凤凰', '麒麟', '玄武']

3.remove(): 删除指定元素

使用remove()删除元素,并不需要知道这个元素在列表中的具体位置,只需要知道该元素存在于列表中即可

若要删除的东西在列表中根本不存在,程序就会报错

remove() 并不能指定删除某个位置的元素,这需要用 del 实现。

列表名.remove( 元素1 )

remove(元素值)
'''
    功能: 删除指定元素。
              
    参数: 
        ① 列表中存在的元素。
    
    返回值: 删除完成后的列表。
'''
① 只删除指定的第一个

只删除指定的第一个值,如果要删除的值在列表中出现多次,就需要使用循环来判断是否删除了所有这样的值。

fruits = ['葡萄','菠萝','草莓','大鸭梨','菠萝']
fruits.remove('菠萝')
fruits
# output: ['葡萄', '草莓', '大鸭梨','菠萝']
② 删除不存在的元素
python
fruits = ['葡萄','菠萝','草莓','大鸭梨','菠萝']
fruits.remove('芒果')
fruits

# ValueError: list.remove(x): x not in list
③ 删除时也可接着使用该值

在定义列表后,先将值存储在变量中,接着,用这个变量来告诉Python将哪个值从列表中删除,最后,在列表中该值被删除,但它还存储在变量中。

python
fruits = ['purple','菠萝','草莓','大鸭梨','菠萝']
print(fruits)
fruit = fruits[0]
fruits.remove(fruit)
print(fruits)
print("\nA " + fruit.title() + " is too expensive for me.")
'''
    ['purple', '菠萝', '草莓', '大鸭梨', '菠萝']
    ['菠萝', '草莓', '大鸭梨', '菠萝']

    A Purple is too expensive for me.
'''

4.clear():清空列表中所有元素

列表名.clear()

python
'''
    功能: 清空列表中所有元素。 

    参数: 无。      

    返回值: 空列表。
'''   
① 怎么做?
python
fruit = ['葡萄','草莓','大鸭梨','菠萝']
fruit.clear()

5.方法的选择

当我们不确定该选择del语句、pop()、remove()中的哪一个的时候,我们可以按照以下一个简单判断标准:若是我们要从列表中删除一个元素,且不再以任何方式使用它,就使用del语句;若是我们在删除元素之后还想继续使用它,就是用pop()或remove()方法

上一篇下一篇

猜你喜欢

热点阅读