Python连载(0005): 基本数据类型之列表

什么是列表?

列表就是用中括号[]包裹起来的、有序的元素的集合,多个元素之间使用逗号,进行分隔。

语法如下:

# 创建一个名为name_list的列表
# 列表中包含4个元素(或成员),分别为"张三", "李四", "王五", "赵六"
name_list = ["张三", "李四", "王五", "赵六"]
  • 当列表中不包含任何元素时,就是空列表,例如:

    empty_list = []
    
  • 列表中的元素可以是任何类型,可以是数字、字符串、列表、元组等类型。例如:

    example_list = [24, "字符串元素", ["字列表的字符串元素", 2]]
    

访问列表元素

  • 列表中的每个元素都会被分配一个下标。

  • 索引/下标:

    • 从第一个元素开始,第一个元素的下标为0,第二个元素的下标为1,第三个元素的下标为2,以此类推,第N个元素的下标为N-1。
    • 还可以从最后一个元素开始,最后一个元素的下标是-1,倒数第二个元素的下标是-2,以此类推,倒数第N个元素的下标为-N。

    image-20210122124607113

访问单个元素

通过列表名[下标]的方式可以访问列表元素,例如:

names = ["张三", "李四", "王五", "赵六"]
print(names[0])	# 打印names列表第一个元素"张三"
print(names[-1]) # 打印names列表最后一个元素"赵六"

image-20210122124740149

切片

  • 通过列表名[起始下标:截止下标+1]的方式可以访问列表的一段元素,例如:
names = ["张三", "李四", "王五", "赵六"]
print(names[1:3])	# 打印names列表的中间两个元素"李四"、"王五"

image-20210123162641788

注意:当通过name[1:3]访问列表中一段元素时,下标3所对应的元素是不在访问范围内的,而下标1对应的元素在访问范围内。

  • 切片还可以倒着切,例如:
names = ["张三", "李四", "王五", "赵六"]
print(names[-3:-1]) # 使用负数下标,打印names列表中中间两个元素

image-20210123162755582

  • 如果要从列表的第一个元素开始,那么可以使用列表名[:截止下标+1]的方式,也就是不指定起始下标,例如:
names = ["张三", "李四", "王五", "赵六", "钱七", "周八"]
print(names[:4]) # 输出列表的前4个元素

image-20210123163642900

  • 如果要切片至列表的最后一个元素,那么可以使用列表名[起始下标:]的方式,也就是不指定截止下标,例如:
names = ["张三", "李四", "王五", "赵六", "钱七", "周八"]
print(names[-4:]) # 输出列表的最后4个元素

image-20210123163846672

  • 如果既不指定起始下标,也不指定截止下标,即列表名[:],那么就能获取整个列表,例如:
names = ["张三", "李四", "王五", "赵六", "钱七", "周八"]
print(names[:])	# 输出整个列表

image-20210123164042031

  • 切边还可以通过列表名[起始下标:截止下标+1:步长]跳着切,在不指定步长的情况下,步长的默认值为1。示例如下:
names = ["张三", "李四", "王五", "赵六", "钱七", "周八"]
print(names[::1])	# 以步长为1的方式对列表切片
print(names[::2])	# 以步长为2的方式对列表进行切片
print(names[::-1])	# 当把步长设置为-1时,可以实现列表的反转

image-20210123164537039

增:向列表中增加元素

通过append()追加

追加:把新元素添加到列表的末尾

names = ["张三", "李四", "王五", "赵六"]
names.append("郑七") # 把元素“郑七”添加到names列表的尾部
print(names)

image-20210122171234730

通过insert()插入

插入:把新元素插入到列表的指定位置

names = ["张三", "李四", "王五", "赵六"]

# 在元素“李四”的前面插入一个名字“郑七”,
# “李四”的下标是1,也就是新元素要插入的位置是1
names.insert(1, "郑七")
print(names)

image-20210122171458824

通过extend()合并

合并:将两个列表合并成一个列表

names_1 = ["James", "John", "Kobe"]
names_2 = ["张三", "李四", "王五", "赵六"]

names_1.extend(names_2)  # 将列表names_2合并到names_1中
print(names_1)

image-20210122174705338

删:从列表中删除元素

通过remove()删除

names = ["张三", "李四", "王五", "赵六"]

# 将“李四”从列表中删除
names.remove("李四")
print(names)

image-20210122171943245

注意:

  • remove()会从列表的第一个元素开始查找要删除的元素,找到第一个匹配的元素后,就把它删除。remove()只会删除它找到的第一个元素。

  • 如果传递给remove()的元素在列表中不存在,那么Python会报错,例如:

    image-20210122172300448

通过del删除

del可以通过del 列表名[下标]的形式删除指定位置的元素。

names = ["张三", "李四", "王五", "赵六"]
del names[1]	# 删除列表中下标为1的元素,“李四”
print(names)

image-20210122172808649

通过pop()删除

  • pop()可以删除一个元素,在不给它传入参数的情况下,默认删除列表的最后一个元素。
  • 还可以直接给pop()传入要删除的元素下标。
  • pop()执行删除操作之后,会把删除的元素作为该操作的返回值,我们可以把这个元素存放在变量里。
names = ["张三", "李四", "王五", "赵六"]

# 从列表中删除最后一个元素,并把删除的元素保存在del_element变量中
del_element = names.pop()
print(del_element)
print(names)

# 删除列表中的下标为1的元素,并把删除的元素保存在del_element变量中
del_element = names.pop(1)
print(del_element)
print(names)

image-20210123162325992

通过clear()清空列表

如果想要删除列表中的所有元素,可以调用clear(),例如:

names = ["张三", "李四", "王五", "赵六"]
names.clear()	# 删除列表中的所有元素
print(names)	# 输出names,发现列表确实变成空列表了

image-20210123161520046

改:改变列表中某元素的值

想要修改列表元素的值,只需要通过下标找到对应元素,然后重新赋值即可。

names = ["张三", "李四", "王五", "赵六"]
names[1] = "郑七"	# 把“李四”换成“郑七”
print(names)

image-20210122171742911

查:查询列表中的元素

  • 通过in或者not in判断元素是否在列表中

    names = ["张三", "李四", "王五", "赵六"]
    "张三" in names  # 如果元素在列表中,则返回True,否则,返回False
    "张三" not in names # 如果元素不在列表中,则返回True,否则,返回False
    

    image-20210122173105774

  • 通过index()确定某个元素的下标

    names = ["张三", "李四", "王五", "赵六"]
    print(names.index("李四")) # 打印“李四”的下标
    

    image-20210122173425344

    注意:

    • index()从列表第一个元素开始查找,直接返回找到的第一个匹配的元素的下标。

    • 如果要查询的元素不存在,则Python会报错,例如:

      image-20210122173644327

  • 通过count()统计某个元素出现的次数

    names = ["张三", "李四", "王五", "赵六", "李四"]
    print(names.count("张三"))  # “张三”在列表中出现的次数
    print(names.count("李四"))  # “李四”在列表中出现的次数
    

    image-20210122173954308

排序 & 反转

通过sort()进行排序

如果列表中的元素都是数字,可以用sort()进行排序,例如:

old_list = [5,3,6,7,100,0,80]
old_list.sort()	# 对old_list进行排序
print(old_list)

image-20210123165134700

sort()是直接对old_list进行改变,也就是说,old_list会变成排序后的状态。

通过sorted()进行排序

使用sorted()也可以对里边进行排序,例如:

old_list = [5,3,6,7,100,0,80]

# 对old_list进行排序,将排序结果保存在new_list中
new_list = sorted(old_list)  

print(old_list)
print(new_list)

image-20210123203727122

使用sorted()排序,old_list不会改变sorted()会将old_list排序的结果作为该操作的返回值进行返回,我们需要按照需求将其保存在新的变量new_list中。

注意:当列表中的元素不是数字时,也是可以使用sort()或者sorted()进行排序的,只不过排序规则并不是数值大小,而是和编码有关。

通过reverse()进行列表反转

之前提到过,可以通过列表名[::-1]的方式对列表进行反转,但是这种方式并不会对原列表进行改变,需要把反转的结果进行保存,例如:

test_list = [1,2,3,4,5,6,7,8,9,10]

# 对test_list进行反转,反转结果保存到new_list中
new_list = test_list[::-1] 

print(test_list) # 原列表并不会发生改变
print(new_list) # 新列表中保存的是反转的结果

image-20210123205102310

列表还支持reverse()方法对列表进行反转,而且这种方法是直接对原列表进行修改,也就是说,原来的列表会直接变成反转后的状态:

test_list = [1,2,3,4,5,6,7,8,9,10]
test_list.reverse() # 对test_list进行反转
print(test_list)

image-20210123205319639

嵌套列表

之前提到过,列表的元素还可以是列表,那么这种情况下,子列表中的元素怎么访问呢?

name_list = ["李磊", "韩梅梅", ["建国", "国强"]]
print(name_list[2])  # 通过列表名[下标]可以获取整个子列表
print(name_list[2][0])	# 获取子列表中第一个元素“建国”
print(name_list[2][1])  # 获取子列表中第二个元素“国强”

image-20210123161249941

遍历列表

如果想要依次获取列表中的每个元素的值,可以使用下面两种方式:

name_list = ["李磊", "韩梅梅", "建国", "国强"]
for item in name_list:
    print(item)

image-20210123205546946

name_list = ["李磊", "韩梅梅", "建国", "国强"]
for i in range(len(name_list)):
    print(name_list[i])

image-20210123205648646

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值