0
点赞
收藏
分享

微信扫一扫

Python list 列表方法


Python List 方法

  • ​​index() 方法​​
  • ​​count()方法​​
  • ​​append()方法​​
  • ​​extend()方法​​
  • ​​remove()方法​​
  • ​​del()方法​​
  • ​​pop()方法​​
  • ​​reverse()方法​​
  • ​​insert()方法​​
  • ​​sort()方法​​


假设我们有一个

​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()​​方法只是介绍了其用法的冰山一角,详细的用法我们会在以后进行详细地说明。

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


举报

相关推荐

0 条评论