Python3之列表(List)浅谈

日期:2019年11月23日
作者:Commas
注释:学习就是为了忘记,让我们来总结一下Python3列表的定义、11个列表方法的使用、5种列表遍历的方法…
如果您想了解更多有关Python的知识,那么请点《我的Python浅谈系列目录》



一、列表的定义

列表有序的可变的元素集合,每个元素都会分配一个数字,这个数字就是对应元素在列表的索引,即“列表[索引] = 元素”。

num_list = [111, 222, 333] # 列表直接定义
num_list[0] # 值为111
num_list[1] # 值为222
num_list[2] # 值为333

在这里插入图片描述

二、列表的方法

获取“列表方法”的方法如下:
Python语句:print(dir([]))
控制台输出:
[‘add’, ‘class’, ‘contains’, ‘delattr’, ‘delitem’, ‘dir’, ‘doc’, ‘eq’, ‘format’, ‘ge’, ‘getattribute’, ‘getitem’, ‘gt’, ‘hash’, ‘iadd’, ‘imul’, ‘init’, ‘init_subclass’, ‘iter’, ‘le’, ‘len’, ‘lt’, ‘mul’, ‘ne’, ‘new’, ‘reduce’, ‘reduce_ex’, ‘repr’, ‘reversed’, ‘rmul’, ‘setattr’, ‘setitem’, ‘sizeof’, ‘str’, ‘subclasshook’, ‘append’, ‘clear’, ‘copy’, ‘count’, ‘extend’, ‘index’, ‘insert’, ‘pop’, ‘remove’, ‘reverse’, ‘sort’]

  1. append(object)
    Append object to the end of the list.
    在列表末尾添加新的对象
name_list = []
name_list.append("Commas")
print(name_list)
# 控制台输出:['Commas']
  1. insert(index, object)
    Insert object before index.
    将对象插入在列表(索引为index元素之前的位置)
name_list = ["Commas"]
name_list.insert(0, "星爷")
print(name_list)
# 控制台输出:['星爷', 'Commas']
  1. extend(iterable)
    Extend list by appending elements from the iterable.
    在列表末尾一次性追加另一个序列中的多个值
    (用新列表扩展原来的列表)
name_list = ["星爷"]
temp_list = ["Commas"]
name_list.extend(temp_list)
print(name_list)
name_list.extend("123")
print(name_list)
# 控制台输出:
# ['星爷', 'Commas']
# ['星爷', 'Commas', '1', '2', '3']
  1. copy()
    Return a shallow copy of the list.
    返回列表的浅复制(开辟了新的内存空间)
# (1)列表方法浅复制
name_list = ["Commas"]
copy_list = name_list.copy()
copy_list.append("星爷")
print(name_list, id(name_list))
print(copy_list, id(copy_list))
# 控制台输出:
# ['Commas'] 1886939296008
# ['Commas', '星爷'] 1886938538568
#-------------------------
# (2)直接用赋值符号
name_list = ["Commas"]
equal_list = name_list
equal_list.append("星爷")
print(name_list, id(name_list))
print(equal_list, id(equal_list))
# 控制台输出:
# ['Commas', '星爷'] 1886938579720
# ['Commas', '星爷'] 1886938579720

(i)知识加油站
id(object)–> 获得 obj 的内存地址(10进制)
(ii)小结:
1、列表的copy方法是重新开辟了一个新的内存空间,将name_list的“值”复制过去,所以在对copy_list添加元素的时候,name_list的值不变,感觉好像只是浅浅的复制了原列表的“值”,与原来列表没有任何关联了,所以就将该方法称之为列表的【浅复制】
2、赋值号操作(=)没有开辟新的内存空间,只是复制了列表的内存地址,因为是同一块内存空间,在同一块内存上修改(追加一个元素)所以name_list的值也会进行更改,称之为列表的【深复制】

  1. remove(object)
    Remove first occurrence of value.
    Raises ValueError if the value is not present.
    移除列表中某个值的第一个匹配项,
    若值不存在,则抛出异常。
name_list = ["逗号先生", "星爷", "达叔", "逗号先生"]
print(name_list)
name_list.remove("逗号先生")
print(name_list)
name_list.remove("Commas") #异常:ValueError
print(name_list)
# 控制台输出:
# ['逗号先生', '星爷', '达叔', '逗号先生']
# ['星爷', '达叔', '逗号先生']
# File "D:test.py", line 5, in <module> name_list.remove("Commas")
# ValueError: list.remove(x): x not in list

小结:
1、移除的元素是列表中第一次出现的元素;
2、如果移除的元素不在列表中,那么会报错。

  1. pop(index)
    Remove and return item at index (default last).
    Raises IndexError if list is empty or index is out of range.
    移除列表中的一个元素(默认最后一个元素),并且返回该元素的值,
    若值不存在,则抛出异常。
name_list = ["星爷", "达叔", "Commas"]
print(name_list)
name_list.pop()
print(name_list)
name_list.pop(1)
print(name_list)
name_list.pop(6) #异常:IndexError
print(name_list)
# 控制台输出:
# ['星爷', '达叔', 'Commas']
# ['星爷', '达叔']
# ['星爷']
# File "D:test.py", line 5, in <module> name_list.pop(6)
# IndexError: pop index out of range

小结:
1、默认移除并返回最后一个元素,
如果index有指定,那么久移除并返回指定元素;
2、如果pop的index超出列表的范围,那么会报错。

  1. clear()
    Remove all items from list
    移除列表所有的元素(清空列表元素,列表还在)
name_list = ["星爷", "达叔", "Commas"]
print(name_list)
name_list.clear()
print(name_list)
# 控制台输出:
# ['星爷', '达叔', 'Commas']
# []
  1. index(object)
    Return first index of value.
    Raises ValueError if the value is not present.
    从列表中找出某个值第一个匹配项的索引位置
    若值不存在,则抛出异常。
name_list = ["星爷", "达叔", "Commas"]
index = name_list.index("达叔")
print(index)
# 指定列表下标从0到2中查询“达叔”的下标值
index = name_list.index("达叔", 0, 2)
print(index)
index = name_list.index("逗号先生") #异常:ValueError
print(index)
# 控制台输出:
# 1
# 1
# File "D:test.py", line 7, in <module> 
# index = name_list.index("逗号先生")
# ValueError: '逗号先生' is not in list
  1. count(object)
    Return number of occurrences of value.
    统计某个元素在列表中出现的次数
name_list = ["星爷", "达叔", "星爷"]
count = name_list.count("星爷")
print(count)
count = name_list.count("逗号先生")
print(count)
# 控制台输出:
# 2
# 0
  1. reverse()
    Reverse IN PLACE.
    逆序,反转,将列表元素的顺序反过来
name_list = ["星爷", "达叔", "Commas"]
print(name_list)
name_list.reverse()
print(name_list)
# 控制台输出:
# ['星爷', '达叔', 'Commas']
# ['Commas', '达叔', '星爷']
  1. sort()
    Stable sort IN PLACE.
    排序,对原列表进行排序
num_list = [1, 6, 2, 9]
print(num_list)
# 升序
num_list.sort()
print(num_list)
# 降序
num_list.sort(reverse=True)
print(num_list)
# 控制台输出:
# [1, 6, 2, 9]
# [1, 2, 6, 9]
# [9, 6, 2, 1]

三、列表的遍历

  1. 使用for循环遍历
name_list = ["星爷", "达叔", "Commas"]
for name in name_list:
    print(name)

控制台输出结果:
星爷
达叔
Commas

  1. 使用while循环遍历
name_list = ["星爷", "达叔", "Commas"]
# 初始化计数器
count = 0
while count < len(name_list):
    print(name_list[count])
    # 相当于count = count + 1
    count += 1

控制台输出结果:
星爷
达叔
Commas

  1. 使用range()遍历
name_list = ["星爷", "达叔", "Commas"]
# (1)range(stop)
for index in range(len(name_list)):
    print(name_list[index], end=",")
print() # 换行
# (2)range(start, stop)
for index in range(1, len(name_list)):
    print(name_list[index], end=",")
print() # 换行
# (3)range(start, stop ,step)
for index in range(0, len(name_list), 2):
    print(name_list[index], end=",")

控制台输出结果:
星爷,达叔,Commas,
达叔,Commas,
星爷,Commas,

  1. 使用iter()遍历
name_list = ["星爷", "达叔", "Commas"]
for value in iter(name_list):
    print(value)

控制台输出结果:
星爷
达叔
Commas

  1. 使用enumerate()遍历
name_list = ["星爷", "达叔", "Commas"]
for index, value in enumerate(name_list):
    print(index, value)

控制台输出结果:
0 星爷
1 达叔
2 Commas

本文参考:
1、https://www.runoob.com/python/python-lists.html


版权声明:本文为博主原创文章,如需转载,请给出:
原文链接:https://blog.csdn.net/qq_35844043/article/details/103116752

发布了26 篇原创文章 · 获赞 18 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_35844043/article/details/103140116