Python list 列表方法


假设我们有一个 list对象

list1 = [1, 1, 2]

index() 方法

index()方法:找出列表对象中某个元素对应的索引值
举例1:找出list1中值为2的元素所对应的索引值

list1 = [1, 1, 2]
print(list1.index(2))
"""
result:
2
"""

举例2:找出list1中值为1的元素所对应的索引值

list1 = [1, 1, 2]
print(list1.index(1))
"""
result:
0
"""

这里我们看到问题出现了,list1列表中有两个元素都为1,但是当我们查找元素1所对应的索引值时仅仅得到了一个值,这是因为index()方法会默认从左到右找出第一个符合要求的元素的对应索引值。那么如果我们想要找到第二个元素1所对应的索引值怎么办呢?

举例3:找出list1中第二个值为1的元素所对应的索引值

list1 = [1, 1, 2]
print(list1.index(1, 1, 2))
"""
result:
1
"""

我们指定了让程序从列表第二个元素开始查找,这样子就可以跳过第一个值为1的元素,最后我们成功地得到了列表中第二个值为1的元素的索引值。

那么又会有人说了,这个功能不是很鸡肋,要是列表很长,出现第一个符合要求的第一个元素很靠后,难道我还要去自己数去确定从哪一个元素开始吗?那这程序不写也罢。事实也确实如此,显然上述的方法不够智能,无法满足我们的需求。我们暂时搁置一下这个问题,我们先来讨论一下能否一次性得到所有满足要求的元素的对应索引值呢?
举例4:找出list1中值为1的元素所对应的所有索引值

list1 = [1, 1, 2]
goal_element = 1
start = 0
for element in list1:
    if element == goal_element:
        index = list1.index(goal_element, start, -1)
        start = index + 1
        print(index)
"""
result:
0
1
"""

我们可以看到上面我们逐个打印出了列表中值等于1的元素的索引值。其中list1.index(goal_element, start, -1)表示我们从列表中的第start个元素进行搜索,到列表中的最后一个元素结束。当然如果我们想要输出更加完整一些,我们可以提前初始化一个新的列表对象index_list用以保存所有满足条件元素对应的索引值。代码如下:

list1 = [1, 1, 2]
goal_element = 1
index_list = []
start = 0
for element in list1:
    if element == goal_element:
        index = list1.index(goal_element, start, -1)
        start = index + 1
        index_list.append(index)

print(index_list)
"""
result:
[0, 1]
"""

可以看到,此时我们输出了一个列表,其中存放了列表中所有满足条件的元素的索引值。关于append()函数的用法我们后面会进一步说明。现在我们可以回到刚才的问题了,如何得到列表中第二个值为1的元素的索引值。我们只需在得到上面index_list的基础上使用如下代码:

print(index_list[2-1])
"""
result:
1
"""

其中2表示第二个符合要求的元素,1表示因为列表的索引值是从0开始的,所以我们要减去1。至此,index()函数的用法暂时告一段落。

count()方法

count()方法:找出列表对象中某个元素出现的次数

list1 = [1, 1, 2]
print(list1.count(1))	# 找出值为1的元素出现的次数
print(list1.count(2))	# 找出值为2的元素出现的次数
"""
result:
2
1
"""

可以看到,这里我们成功获取到了列表中值为1的元素出现的次数为2,值为2的元素出现的次数为1

append()方法

append()方法:向列表对象的末尾位置添加某个新的元素

list1 = [1, 1, 2]
list1.append("append")
print(list1)
"""
result:
[1, 1, 2, 'append']
"""

可以看到,这里我们成功地向列表对象的末尾添加了一个字符串元素"append".

说到向列表中添加元素的方法,就不得不说到另一种方法extend()

extend()方法

extend()方法:采用迭代的方式向列表对象中添加数据

list1 = [1, 1, 2]
list1.append("extend")
list1.extend("extend")
print(list1)
"""
result:
[1, 1, 2, 'extend', 'e', 'x', 't', 'e', 'n', 'd']
"""

可以看到,相较于append()方法在添加字符串时会将完整的字符串添加进入列表,extend()方法会将字符串分解为单个的字符逐个添加进入列表中。因此,使用extend()可以直接以列表的形式向另一个列表中添加元素。来看这个例子:

list1 = [1, 1, 2]
list1.extend(["append", "extend"])
print(list1)
"""
result:
[1, 1, 2, 'append', 'extend']
"""

remove()方法

remove()方法:删除列表对象某个特定的元素,如果存在多个相同元素,则默认从左到右删除第一个符合要求的元素

list1 = [1, 1, 2]
list1.append("append")
print(list1)
list1.remove("append")
print(list1)
"""
result:
[1, 1, 2, 'append']
[1, 1, 2]
"""

可以看到,这里我们成功地向列表中添加了一个字符串元素"append"后又使用remove()方法将其删除了。

这里举一个实例来说明remove()方法使用的误区—Python 去掉列表中小于某个特定值的所有值(超链接点击跳转)。

del()方法

del()方法:与remove()方法相同,也用于删除列表中的元素

那么也许有人会问,既然已经有了删除列表元素的方法了,为什么还要再搞出来一个新的删除方法呢?这是不是多此一举呢?当然不是。每个被创造出来的方法都具有其本身的特性,虽然大多数情况下他们都可以互相通用,但是在特殊的情境下,使用其中的一个肯定优于使用另一个。比如我们想要一次性删除列表对象中的好几个元素,这时使用del()方法就可以避免使用循环体结构加remove()方法来进行逐个删除了。

# 使用remove()方法删除list1中的第一个和第二个元素
list1 = [1, 1, 2]
list1.remove(1)
list1.remove(1)
print(list1)
"""
result:
[2]
"""
# del()方法删除list1中的第一个和第二个元素
list1 = [1, 1, 2]
del(list1[:2])
print(list1)
"""
result:
[2]
"""

可以看到,使用del()方法,可以一次性删除列表对象中的多个值,相较于remove()方法,更为便捷。

至此,我们已经探究了两种删除列表中元素的方法。接下来我们介绍另一种删除列表中元素的方法。

pop()方法

pop():删除列表中给定索引值所对应的元素

list1 = [1, 1, 2]
list1.pop(2)
print(list1)
"""
result:
[1, 1]
"""

可以看到,我们成功地删除了列表中的最后一个元素。

reverse()方法

reverse()方法:将列表对象的排列顺序反过来

list1 = [1, 1, 2]
print(list1)
list1.reverse()
print(list1)
list1.reverse()
print(list1)
"""
result:
[1, 1, 2]
[2, 1, 1]
[1, 1, 2]
"""

可以看到,第一次使用reverse()方法我们将列表中的元素排列数序反了过来,第二次使用reverse()方法,将列表中的元素排列顺序再次翻转得到了初始化时的列表。

insert()方法

insert()方法:向列表中的特定位置插入给定元素

list1 = [1, 1, 2]
list1.insert(3, "insert")
print(list1)
"""
result:
[1, 1, 2, 'insert']
"""

可以看到,我们成功地向列表的末尾插入了字符串"insert"。但是使用insert()方法向列表末尾插入值时需要特别注意不能用使用-1。来看一段代码:

list1 = [1, 1, 2]
list1.insert(-1, "insert")	# 这行代码等同于list1.insert(2, "insert")
print(list1)
"""
result:
[1, 1, 'insert', 2]
"""

可以看到,我们未能将字符串"insert"插入到列表的末尾位置,而是倒数第二位,那么该使用什么样通用的方法将字符串插入到列表的末尾处呢?

list1 = [1, 1, 2]
list1.insert(len(list1), "insert")
print(list1)
"""
result:
[1, 1, 2, 'insert']
"""

可以看到,我们成功地向列表的末尾插入了字符串"insert"

sort()方法

sort()方法:将列表中的元素进行排序,默认升序

list1 = [1, 1, 2]
list1.sort()
print(list1)
list1.sort(reverse=True)
print(list1)
"""
result:
[1, 1, 2]
[2, 1, 1]
"""

可以看到,因为我们的列表本身是升序排列,所以在第一次使用sort()时列表的排列顺序保持不变,当我们设置reverse标志为True时,列表成功地按照降序进行了排列。

这里sort()方法只是介绍了其用法的冰山一角,详细的用法我们会在以后进行详细地说明。

码字不易,如果大家觉得有用,请高抬贵手给一个赞让我上推荐让更多的人看到吧~

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

勤奋的大熊猫

你的鼓励将是我写作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值