14天通晓Python_列表list_元组tuple _(四)_上

今天是学习python的第四天,完成了今天基本第一阶段就完成了。今天主要任务是两个个比较重要的类型,list_tuple;话不多说下面开始吧🐳🐳🐳

🍊.list_列表

🍉 list_列表的基础概念

列表(list),是一个有序可变的容器,在里面可以存放多个不同类型的元素。简单来说就是C++里面的Vector,还没有学过C++的少年,可以理解C语言的数组(可以动态增加大小的容量的数组😁)。
(python里面的不可变类型有:int,str,bool,tuple,frozenset(不可变集合),bytes(字节串),frozendict,自定义实现(不可变映射))

user_list =  ["nullptr","root","苍老师"]
number_list = [666,888,890,123,777]
data_list = [1,True,"nullptr","玩偶姐姐","ikun"]

🍉 list_列表的常见功能

🍌 append()追加,在原列表中尾部追加值。

my_list = [123,"nullptr",True,"ikun"]
print(my_list) # 输出:[123,"nullptr",True,"ikun"]
my_list.append("玩偶姐姐")
print(my_list) # 输出:[123,"nullptr",True,"ikun","玩偶姐姐"] 

🍌 extend()批量追加,将一个列表中的元素逐一添加另外一个列表。

str_list = ["nullptr","root","qwert"]
str_lsit.extend( [11,22,33] ) #中的值逐一追加到str_list
print(str_list) # ["root","qwert",11,22,33]

🍌 insert()插入,在原列表的指定索引位置插入值

list和C语言数组一样,从下标0开始,到N-1结束。
str_list = ["nullptr","root","qwert"]
str_lsit.insert(0,"C++") # ["C++","nullptr","root","qwert"]
str_lsit.insert(2,"java") # ["C++","nullptr","java","root","qwert"]
print(str_list) # 输出: ["C++","nullptr","java","root","qwert"]

🍌remove() 在原列表中根据值删除(从左到右找到第一个删除)【慎用,里面没有会报错】

str_list = ["nullptr","root","qwert"]
str_list.remove("qwert")
# str_list.remove("qqqq") 报错
print(str_list) # 输出:["nullptr","root"]

🍌pop()在原列表中根据索引踢出某个元素(根据索引位置删除)

str_list = ["nullptr","root","qwert"]
#              0         1       2
str_list.pop(2)
print(str_list) # 输出:["nullptr","root"]

🍌clear()清空原列表

str_list = ["nullptr","root","qwert"]
str_list.clear()
print(str_list) # 输出:[]

🍌index()根据值获取索引

str_list = ["nullptr","root","qwert"]
num = str_list.index("root")
print(num) # 输出:1

🍌sort()列表元素排序

# 数字排序
num_list = [11, 22, 4, 57, 22, 199, 88]
print(num_list)
num_list.sort()  # 让num_list从小到大排序
num_list.sort(reverse=True)  # # 让num_list从大到小排序
# 字符串排序
user_list = ["abc", "Abc", "abd", "bde", "玩偶姐姐", "1"]
print(user_list)
"""
sort的排序原理
对于字符串,Python会根据字母的ASCII码值进行比较。ASCII码值小的字符会排在前面。对于字母大小写,大写字母的ASCII码值要小于小写字母,所以大写字母会排在前面。
对于数字,Python会直接根据数值大小进行比较,小的数会排在前面
"""
user_list.sort()
print(user_list)

注意:排序时内部元素无法进行比较时,程序会报错(尽量数据类型统一)

🍌reverse()反转原列表

user_list = ["abc", "Abc", "abd", "bde", "玩偶姐姐", "1"]
user_list.reverse()
print(user_list) # 输出:['1', '玩偶姐姐', 'bde', 'abd', 'Abc', 'abc']

🍉 list_列表的基本功能

常用功能要比基础功能在以后的功能更常用,更重要,所以把常用功能放在了基础功能前面, 下面一起来看看list的基础功能

下面一起来看看list的基础功能

🍌相加,两个列表相加获取生成一个新的列表。

num_list = [11, 22, 199, 88]
str_list = ["abc", "Abc","1"]
add_list = num_list + str_list
print(add_list) # 输出:[11, 22, 199, 88, 'abc', 'Abc', '1']

🍌相乘,列表*整型 将列表中的元素再创建N份并生成一个新的列表。

str_list = ["abc", "Abc"]
add_str_list = str_list * 2
print(add_str_list) # 输出:['abc', 'Abc', 'abc', 'Abc']

🍌运算符in包含由于列表内部是由多个元素组成,可以通过in来判断元素是否在列表中。

user_list = ["abc", "Abc", "abd", "bde", "玩偶姐姐", "1"]
result = "玩偶姐姐" in user_list
print(result) #  True
# result = "ikun" not in user_list
# print(result) #  True

注意:列表检查元素是否存在时,是采用逐一比较的方式,效率会比较低。

🍌获取长度

user_list = ["abc", "Abc", "abd", "bde", "玩偶姐姐", "1"]
print( len(user_list) ) # 输出:6

🍌索引,一个元素的操作

user_list = ["abc", "Abc", "abd", "bde", "玩偶姐姐", "1"]
print(user_list[4]) # 输出:玩偶姐姐

注意:超出索引范围会报错。
提示:由于字符串是不可变类型,所以他只有索引读的功能,而列表可以进行 读、改、删

🍌切片,多个元素的操作(很少用)

# 读
user_list = ["abc", "Abc", "abd", "bde", "玩偶姐姐", "1"]
print(user_list[:]) # : 两边空白就是两边全部到尽头-->['abc', 'Abc', 'abd', 'bde', '玩偶姐姐', '1']
print( user_list[0:2] ) # 获取区间-->[0,2)-->['abc', 'Abc']
print( user_list[1:] ) # 获取[1,list尾部)-->['Abc', 'abd', 'bde', '玩偶姐姐', '1']
print( user_list[-5:-1] ) # 从尾部获取[-1,-5)-->['Abc', 'abd', 'bde', '玩偶姐姐']

user_list = ["abc", "Abc", "abd", "bde", "玩偶姐姐", "1"]
last_element_to_end = user_list[-1:]
print(last_element_to_end)  #获取倒数第一个['1']

  • 替换
# 换
user_list = ["abc", "Abc", "abd", "bde", "玩偶姐姐", "1"]
user_list[0:2] = [11, 22, 33, 44]
print(user_list) # 与区间[0,2)的元素进行替换-->[11, 22, 33, 44, 'abd', 'bde', '玩偶姐姐', '1']
  • 步长
# 步长
my_list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
# 使用单冒号,获取索引1到4的元素
slice1 = my_list[1:5]
print(slice1)  # 输出: [1, 2, 3, 4]

# 使用双冒号,获取索引1到8之间以步长2的元素
slice2 = my_list[1:9:2]
print(slice2)  # 输出: [1, 3, 5, 7]

user_list = ["abc", "Abc", "abd", "bde", "玩偶姐姐", "1"]
last_to_first = user_list[::-1]  # 使用[::-1]来反转列表
print(last_to_first) # ['1', '玩偶姐姐', 'bde', 'abd', 'Abc', 'abc']

🍌for循坏及其注意点

user_list = ["abc", "Abc", "abd", "bde", "玩偶姐姐", "1"]
for item in user_list:
	print(item)
'''打印结果
abc
Abc
abd
bde
玩偶姐姐
1
'''

注意切记,循环的过程中对数据进行删除会踩坑【面试题】

# 错误方式, 有坑,结果不是你想要的。
user_list = ["abc", "Abc", "abd","adf" "bde", "玩偶姐姐", "1"]
for item in user_list:
    if item.startswith("a"):
        user_list.remove(item)
print(user_list)  # 思路没有错但是会错乱:['Abc', 'adfbde', '玩偶姐姐', '1'],结果怎么会这样?
'''
因为在循环中删除元素可能会导致索引错乱。为了避免这种问题,
您可以创建一个新列表来存储要保留的元素,而不是直接修改原始列表。
'''

下面是两种解决方法

# 1.创建一个新list,删除
user_list = ["abc", "Abc", "abd","adf" "bde", "玩偶姐姐", "1"]
new_user_list = [item for item in user_list if not item.startswith("a")]
print(new_user_list) # ['Abc', '玩偶姐姐', '1']

# 2.倒着遍历list删除
user_list = ["abc", "Abc", "abd","adf" "bde", "玩偶姐姐", "1"]
for i in range(len(user_list) - 1, -1, -1): # range(start, stop, step)用法
    if user_list[i].startswith("a"):
        del user_list[i]
print(user_list) # ['Abc', '玩偶姐姐', '1']

到了这里发现文章已经挺长了,第四天的元组tuple,下篇文章整理发出。我尽量在自己学习的时候,在csdn里面对python这门语言的总结,这是已经开始类于对象,如果你觉得这篇文章对你有帮助,点个赞呗,谢谢大家,🐳🐳🐳

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值