python列表的基本操作与功能

列表的基本操作与功能

一.基本操作

1. 创建列表

一个列表需要用中括号[ ]把里面的各种数据框起来,里面的每一个数据叫作“元素”。每个元素之间都要用英文逗号隔开。列表很包容,各种类型的数据(整数/浮点数/字符串)无所不能包。

ages = [1,2,3,4,5,6]  
age2 = ['1', '2', '3', '4','adf',[1,23,4]]
# 列表内的元素可以是不同类型
ages3 = [x for x in range(1,6)]  # 列表生成式 [1,2,3,4,5,6]
ages4 = [i*i for i in range(1,4)] #[1,4,9]

2.列表的下标

列表的顺序一般是从左往右,下标从0开始计数,倒序从-1开始

ages = [1,2,3,4,5,6] 
print(ages[0])  # 1
print(ages[1])  # 2
print(ages[5])  # 6
# print(ages[6])  # Indexerror: list index out of range
print(ages[-1]) # 6  # 倒数第一个
print(ages[-2]) # 5  # 倒数第二个

3.列表的长度

长度一般都用len()函数进行计算

ages = [1,2,3,4,5,6] 
print(len(ages))  # 6

4.遍历列表

遍历列表一般使用for 循环

ages = [11,22,33,44,55]
for n in ages:
    print(n)    # 逐个打印输出元素
    
for i in range(len(ages)):
    print(i)    # 得到每个元素的下标
    
for i in range(len(ages)):
    print(i, ages[i])  # 输出元素下标,以及对应元素
# enemerate(): 枚举/列举  
for i,n in enumerate(ages):
    print(i, n)  # 得到下标以及元素
    
for i in range(4,-1,-1): 
    print(i,ages[i])   # 从后往前遍历
     

5.切片

切片,截取 [start:stop:step] => 范围[start,stop)

ages = [1,2,3,4,5,6,7,8,9]
print(ages[:])  #  取所有  [1,2,3,4,5,6,7,8,9]
print(ages[3:])  # [4, 5, 6, 7, 8, 9]
print(ages[:4])  #[1, 2, 3, 4]
print(ages[4:7])  #[5, 6, 7]
print(ages[::-1])  # 倒序 [9, 8, 7, 6, 5, 4, 3, 2, 1]
print(ages[::2])   # 隔2  [1, 3, 5, 7, 9]
print(ages[4:1:-1])  #   [5, 4, 3]

6. 重复

print([1,2,3]*3)  #  [1, 2, 3, 1, 2, 3, 1, 2, 3]

7. 判断列表成员

ages = [1,2,3,4,5,6,7,8,9]
print(4 in ages)  # True
print(4 not in ages) # False

8.合并列表

print([1,2,3] + [4,5,6])  # [1, 2, 3, 4, 5, 6]

9.删除列表

ages = [1,2,3,4,5,6,7,8,9]
del ages # 
print(ages)   # ages = []

二. 列表的功能

1.增加

append(n):在列表的末尾插入一个元素
insert(i, n) :在列表的指定下标位置插入元素
extend() :将另一个列表中的每一个元素都添加到列表的末尾

# append()  在列表的末尾插入一个元素
nums = [2,3,4]
nums.append(5)
print(nums)  # [2, 3, 4, 5]
# insert(i, n) :在列表的指定下标位置插入元素
nums = [2,3,4]
nums.insert(0, 3)  
print(nums) # [3,2,3,4]
# extend()  :将另一个列表中的每一个元素都添加到列表的末尾
nums = [2, 3, 4]
nums.extend([5,6,7])  #[2, 3, 4, 5, 6, 7]
print(nums)

2.删除元素

# pop(i): 删除对应下标元素
list1 = [2, 3, 4, 5, 6, 7]
list1.pop()  # [2, 3, 4, 5, 6]  不写参数默认删除最后一个
list1.pop(2) #  [2, 3, 5, 6]  # 在新列表上删除下标为2的元素
s = list1.pop(2) # pop()有返回值,返回的是删除的那个元素
# remove(n): 删除指定的第一个元素
nums = [1,2,2,2,2,3,3,4]
nums.remove(2)   # [1, 2, 2, 2, 3, 3, 4]
print(nums)
# 统计指定元素在列表中的出现次数,删除重复元素
nums = [1,2,2,2,2,3,3,4]
for _ in range(nums.count(2)):  # 计算2出现的次数
    nums.remove(2)    # 删除元素2

print(nums)
# index()  :找到列表中第一次出现指定元素的下标,如果不存现在则报错
l = [1,2,3,2,2,4,5]

# del : 删除不彻底,不能从内存里删除
nums = [1,2,3,4,5,6,7]
# nums2 = nums
# del nums
# print(nums2)
del nums[2:5]
print(nums)

# clear():清空列表
nums = [1,2,3,4,5,6,7]
nums.clear()
print(nums)  # []

3.数学功能操作

ages = [1, 3, 4, -6, 5, 88, 2]
print(max(ages))   # 最大数  88
print(min(ages))   # 最小数   -6
print(sum(ages))   # 求和 97

4.排序

sort(): 升序,从小到大进行排序,会改变源列表

sort(reverse=True): 降序,会改变源列表

#sort(): 升序,从小到大进行排序,会改变源列表
ages = [1, 3, 4, -6, 5, 88, 2]
ages.sort()  # 升序排列
print(ages)  # [-6, 1, 2, 3, 4, 5, 88]

#sort(reverse=True): 降序,会改变源列表
ages3 = [1, 3, 4, -6, 5, 88, 2]
ages3.sort(reverse=True)  # 理解为先升序排列然后倒序
print(ages3)  # [88,5,4,3,2,1,-6]

# sorted():升序,不会改变源列表  非列表函数
ages3 = [1, 3, 4, -6, 5, 88, 2]
ages4 = sorted(ages3)  # [-6, 1, 2, 3, 4, 5, 88]
print(ages4)

倒序 reverse() 会改变源列表

reversed() 不会改变源列表

#  倒序 reverse() 会改变源列表
ages = [1, 3, 4, -6, 5, 88, 2]
# print(ages[::-1])
ages.reverse()
print(ages)

# reversed() 不会改变源列表
ages = [1, 3, 4, -6, 5, 88, 2]
ages3 = reversed(ages)
print(ages, list(ages3))

5.可变数据

列表属于可变类型数据,其赋值是有关联的

nums1 = [1,2,3]
nums2 = nums1
nums1[1] = 99
print(nums1, nums2)  # [1, 99, 3] [1, 99, 3]

6.拷贝

# 拷贝
# 浅拷贝,复制
nums1 = [1,2,3]
nums2 = nums1.copy()
nums1[1] = 99
print(nums1, nums2)  # [1, 99, 3] [1, 2, 3]

nums1 = [1,2,3,[123,6,7]]
nums2 = nums1.copy()
nums1[-1][1] = 66
print(nums1, nums2)  #[1, 2, 3, [123, 66, 7]] [1, 2, 3, [123, 66, 7]]


# 深拷贝/深复制
import copy
nums3 = [1,2,3,[4,5,6]]
nums4 = copy.deepcopy(nums3) # 深拷贝,拷贝所有层
nums3[-1][1] = 100  #[1, 2, 3, [4, 100, 6]] [1, 2, 3, [4, 5, 6]]

print(nums3, nums4)
  • 2
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值