列表操作

列表是非常常见的一种数据结构,那么Python中,都对列表提供了哪些操作,又如何对列表进行创建,增、删、改、遍历呢?本文就给大家汇总最基本,也是最常用的几种操作。

创建列表

字符串本质是一个字符列表,但原始字符串并不具备完整的列表性质。以字符串为例,我们来看看如何将字符串转换为列表。这就需要用到list()方法。

# list函数,将字符串转换为列表
student_name = “Alice”
print(list(student_name))

结果:
['A', 'l', 'i', 'c', 'e']

以上示例,定义一个字符串列表student_name,然后调用list方法,将student_name转换为字符数组,通过print打印到控制台。

修改、添加元素

对列表中某个元素的值进行修改,也可以向其中添加新的元素,这就需要用到元素访问,和append方法。看例子函数很简单了,那么接下来看修改元素和增加元素,另外,append和extend这两个大家一定要认真来看,修改元素就比较简单,直接通过索引访问到制定元素,重新赋值;增加元素主要是append函数与extend。

#列表的操作
# Demo修改元素
x = [1,2,3]
x[1] = 5
print(x)
# Demo( 增加 ):append() 
# append 增加 1个元素 
lstr = ["a" ,"b" ,"c" ]
lstr.append( "d" )
print(lstr)
# Demo( 扩展 ):extend()
# extend 扩展多个元素
# extend([]) 中是一个列表,有括号 
lstr.extend([ "e" ,"f" ])
print (lstr) 
lstr.append([“h",“i"])
# Demo (插入): insert() 
# insert() 会在列表中的某个位置增加一元素。 
# 可以指定希望将元素增加到列表中的那个位置 
lstr.insert( 2,“g")
print (lstr)

第一段代码修改第二个元素,由原来的1,修改为2;第二个示例主要给搭建演示extend方式的使用,来看看程序执行的情况:

从代码中可以看到,x原始内容为[1, 2, 3],将第二个元素修改为5之后,数组打印出来就是[1, 5, 3],说明修改有效。原始names = [“a”, “b”, “c”],append操作之后,就变成了[“a”, “b”, “c”, “d”],最后与[“f”, “h”]进行extend之后就变成了一个新的长数组。大家可以自己尝试运行以上代码。

需要注意的是,从实例可以看出来,extend和append之间的差异,append是将参数当做一个元素添加到列表中,而extend的参数必须也是列表,才能得到扩展后的结果。

删除元素

在列表中,移除元素有三种常用的方法,这三种方法虽然都能移除一个元素,但效果和用途是不一样的。

  • remove(): 删除制定的元素
  • del:利用索引删除元素
  • pop(): 弹出最后一个元素,或者根据索引弹出,弹出隐含着删除当前元素

示例代码:

# Demo (删除元素) 
# remove() 删除元素 
lstr = ["a" ,"b" ,"c" ]
lstr.remove("b" )
print (lstr) 
# del()删除
lstr = ["a" ,"b" ,"c" ]
del lstr[0]
print(lstr)
print(len(lstr))
# pop() 弹出删除最后一个元素 
lstr = ["a" ,"b" ,"c" ]
lstr.pop()
print(lstr) 
lstr.pop(1)
print(lstr)

参考并运行上述代码,运行结果如下:

分片赋值

通过分片赋值,可 以一次为多个元素赋值;可以插入新的元素;可以删除元素。用法示例:

# Demo(分片赋值
# 一次赋多个值,替换原有元素 
lstr = ["a" ,"b" ,"c" ]
print (lstr) 
lstr[2:] = list ("de" )
print (lstr)
# 不替换元素 ,插入新的
lstr = ["a" ,"b" ,"c" ]
lstr[1:1] = ["d"]
print (lstr) 
# 分片复制也可以删除元素 
lstr[ 1:2] = [] 
print (lstr) 

运行以上代码,看看效果:

搜索元素

列表中如何有多个元素,如何查找这些元素?可以参考如下两个方法:

  • 查找元素是否在列表中 in
  • 查找元素在列表中的位置( 找元素在列表中的位置( 索引 ) index()

用法参考代码:

# Demo(搜索元素) in 与 index()
lstr = ["alice" ,"bob" ,"tom" ]
if "d" in lstr :
    print (True)
else:
    print(False)

# index()
print(lstr.index("bob"))

代码运行效果:

可以看到,使用in关键字能够判断元素是否存在数组中;使用index能够获取元素的具体位置。虽然,这二者都能判断元素是否存在,但结果还是有差异的,前者只能判断是否存在,后者不仅可以判断存在,而且还能获取具体的位置。

count和reverse

  • count方法:统计一个元素才列表中出现的次数
  • reverse方法:将列表中的元素反向存储(倒置)

用法示例:

# Demo(count 、index)
lstr = ["a" ,"b" ,"c" ,"a" ]
print(lstr.count("a"))

# 倒置
lstr.reverse()
print(lstr)

count方法,是进行统计的,reverse则济宁反转倒置,其结果就是对元素进行了逆序。实例:

numbers = [1, 2, 1, 3, 4],统计1的数量,结果就是2;将其翻转,就得到了[4, 3, 1, 2, 1]。

排序

排序通过sort方法完成,用于在原位置对列表进行排序(改变了原来的列表)。前面的append 、pop 也是如此。重点介绍sort(很多人错误的理解排序了,就给一个新列,其实是在原来的列表上操作)。

用法示例代码:

#Demo1
numbers = [1,2,5,4,3]
numbers.sort()
print(numbers) 
print(numbers.sort())

结果:
[1, 2, 3, 4, 5]
None #改方法是没有返回值的

代码展示:

如上,当sort操作之后,再打印原来的数据就能够得到排序之后的结果了。同时,这里也扩展了sort方法,其实,也可以在不改变原始数组的情况下获取排序后的数组,这就是sorted方法。sort与sorted,sort修改自生,针对自身列表进行排序,因此返回的是none。

总结

我们这一讲里边就讲了这些列表的函数,还有列表的一些增删改查,我们甚至可以把增加、修改,删除元素,简称增删改查这几种操作,希望大家通过案例的一些操作,能够对列表有些加深理解,能够真正理解我列表里边怎么进行操作,怎么去维护的列表。

IT赶路人

专注IT知识分享