Python基础中的列表知识整理归纳

2024-01-01 11:20:01

?这两位学长知识讲解到位,真心建议大家学习他们的文章



https://zhuanlan.zhihu.com/p/79541418

https://blog.csdn.net/qq_24502469/article/details/104185122

1、列表的创建

? ? ? 列表的创建是非常基础的一个问题,我们可以直接创建列表。注意创建列表的时候不要和元组弄混了,列表创建的形式是name_list = [? ],但是反观元组使用的是()。此处的无论是a,b,c_list 都只是列表名,自行命名。

a_list = ["原来你也玩原神啊","其实我也是一名原神玩家","原神启动"]
b_list = ["不许你玩原神"]
c_list = ['率土启动']
print(a_list)
print(b_list)
print(c_list)
#本人先声明自己不是一名原神玩家

? ? ? 使用list()创建列表也是可以的。

joker = list()  # 创建一个空列表
impact = list(range(6)) # 0,1,2,3,4,5 返回的列表元素从0到6但不包括6
Genshin = list(range(1,6)) # 1,2,3,4,5
start = list(range(0,5,1)) # 0,1,2,3,4
# 这里使用的range函数的基本格式是 range(start,stop,step) step步长默认为1 start开始默认为0
print(joker)
print(impact)
print(Genshin)
print(start)
print(joker+impact+[6])

列表推导式也是一种创建列表的方式,比较简单快捷,格式如下:列表名 = i for i in range(n) 条件]

?此处的for循环是添加5元素的循环次数,当然此处我没有添加条件是因为例题要求无需其他条件。

nums = [5 for i in range(10)] # 列表推导式生成包含十个数字5的列表
print (nums) # 引用的是清华大学出版社出版的董付国python程序设计第三版的一个课后题

?使用列表推导式创建包含0到15以内整数的奇数列表:

joker = [x for x in range(0,16,1) if x%2==1]
print(joker)

?2、列表的常用方法归纳

列表常用方法说明
list.append(x)将元素x添加到列表尾部
list.extend(L)

列表L中所有元素添加至列表list尾部

list.insert(index, x)

在列表list指定位置index处添加元素x,该位置后面的所有元素后移一个位

list.remove(x)将列表list中的首次出现的元素x删除,其他前进一个位置
list. pop(index)将列表下标index的元素弹出(删除),默认的话为最末元素
list.clear()删除列表中的所有元素,但保留列表
list.index(x)将列表第一个值为x的元素下标返回,若没有则弹出异常
list.count(x)返回指定元素x在列表中出现的次数
list.reverse(x)将列表中元素逆序(元素位置反转)
list.sort()将列表元素默认升序排列,下面有详细解析
list.copy()返回列表的浅复制

3、浅拷贝的个人理解?

list.copy()浅复制的举例应用?,属于浅拷贝的范畴:

man = ["m",[5,2,1],13]
print(man)
new = man.copy()
new[2] = 14
new[1][2] = 0
print(new)

'''
['m', [5, 2, 1], 13]
['m', [5, 2, 0], 14]

'''

列表生成式生成列表也是浅拷贝:

man =["m",[5,2,1],13]
new = [i for i in man]
print(new)
# ['m', [5, 2, 1], 13]

for x循环遍历进行浅复制:

man = ['m', [5, 2, 1], 13]
new = []
for i in range(len(man)):
    new.append(man[i])
print(new)
# ['m', [5, 2, 1], 13]

切片浅复制整个列表:

简单切片指的是这样的切片形式:new = man[start:stop],超出有效索引范围会复制包括的元素,start的位置比stop还靠后则会复制为空列表。start的缺省值是无穷小,stop的缺省值是无穷大,具体可以自行测试。

man = ['m', [5, 2, 1], 13]
new = man[0:3]
print(new)
# ['m', [5, 2, 1], 13] 简单切片,这里切片的知识学习于知乎胡小涂学长

4、深拷贝

使用deepcopy(),则需要使用impact copy(),无则报错。引用CSDN大佬今晚打老虎所说的是“如果用deepcopy()方法,则无论多少层,无论怎样的形式,得到的新列表都是和原来无关的,这是最安全最清爽最有效的方法”。

import copy
man = ['m', [5, 2, 1], 13]
new = copy.deepcopy(man)
print(new)
# ['m', [5, 2, 1], 13]

5、range函数的熟悉与测试:

a=range(6)
print(list(a))
for i in a :
    if  i ==3:
        continue
    print("耿晨昊是joker%d"%i)
else:
    print("耿晨昊是个飞%d"%i)
for x in "I am Joker耿":
    print(x)
    if x == "耿":
        break
else:
    print("耿晨昊是挺joker的") # 遇到耿直接跳出循环,也就没有了耿晨昊是joker的打印

6、教材课后题:列表推导式生成包含10个数字5的列表

nums = [5 for i in range(10)]
print (nums)
print (10*"耿晨昊是纯纯joker\n")

7、列表排序与列表增加元素方法,列表删除:

列表删除后无法打印,打印提示出错。

my_numbers = [10, 8, 3, 22, 33, 7, 11, 100, 54]

# 按升序对列表进行就地排序
my_numbers.sort()

# 打印修改后的列表
print(my_numbers)

# 输出

#[3, 7, 8, 10, 11, 22, 33, 54, 100]
a_list = list((3,5,7,9,11)) #列表创建
print(a_list)
del a_list #列表删除
# x = alist()      #创建空列表
aList = [3,4,5]
aList = aList + [7] # 基本的添加方法
#aList[3, 4, 5, 7]
print(aList)
del aList[3]
#a_list[4,5,7] 删除元素
print(aList)
aList = [3,5,7]
alist = aList * 3
print ( alist )
# 列表元素乘法增加元素

8、基础数据类型的转换:

# 转换类型不会破环内容
num_str =str(11)
print(type(num_str),num_str)
# 万物皆可转换字符串,想要将字符串转换成数字,那么双引号内必须均为数字
int_num = int(11.345)
print(type(int_num),int_num)

9、list.sort()

基本格式:list.sort(cmp=None, key=None, reverse=False)

reverse 代表排序规则,若reverse = True?降序,?reverse = False 则升序,默认升序。

以下这个其实在上已经使用过,是默认升序排列,但是我们在这里展示降序排列。

另外两个参数cmp和key不太理解,看的也是一头雾水。

my_numbers = [10, 8, 3, 22, 33, 7, 11, 100, 54]

# 按升序对列表进行就地排序
my_numbers.sort()

# 打印修改后的列表
print(my_numbers)
#[3, 7, 8, 10, 11, 22, 33, 54, 100]
my_numbers.sort(reverse = True)
# 输出
print(my_numbers)
# [100, 54, 33, 22, 11, 10, 8, 7, 3]

文章来源:https://blog.csdn.net/m0_73645780/article/details/135305486
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。