python中list详解

目录

list详解

1.基础命令

# 数据类型

# 定义含有一个元素的list

# 取第五个元素

# 取第2-6个元素

# 反向取出list中的元素值

# 数据类型转换

# 数据类型转换(扩充)

# 列表转元组

# 元组转列表

# 将第五位修改为5

# 修改元组中第三个元素的第二个元素

# 扩展(空列表)

 内置命令

1.append

2.insert

3.clear

 4.copy

5.extend

6.pop

7.reverse

8. count

9.index

10.remove

11.sort


list详解

定义列表的时候是使用[],也可以包含不同类型的元素,元素之间用逗号隔开。 list(列表)一个有序的序列结构,列表每一个元素有一个索引(下标)。
列表是一个内置可变的序列,及添加.删除.修改元素。

1.基础命令

# 正向下标     0    1   2     3    4       5        6           7               8
list_data = [1, 1.1, 6+6j, True, None, 'abcd', b'abcd', (1, 2, 3, 4, 5), [1, 2.2, 'AAA']]
# 负向下标    -9  -8    -7   -6     -5     -4      -3           -2              -1

# 数据类型

print(list_data, type(list_data))
print(list_data[0])

# 定义含有一个元素的list

list_data2 = [1.1, ]       # 或者list_data2 = [1, ]
print(list_data2, type([1.1, ]))

# 取第五个元素

print(list_data[4])
print(list_data[-5])

# 取第2-6个元素

print(list_data[1:6])
print(list_data[-8:-3])

# 反向取出list中的元素值

print(list_data[-1:-10:-1])
print(list_data[8::-1])
print(list_data[::-1])

# 数据类型转换

list_data3 = list(list_data)
print(list_data3, type(list_data3))

# 数据类型转换(扩充)

list_data11 = [1, 2, 3]

# 列表转元组

tuple_data11 = tuple(list_data11)
print(tuple_data11, type(tuple_data11))

# 元组转列表

list_data22 = list(tuple_data11)
print(list_data22, type(list_data22))

# 将第五位修改为5

list_data[5] = 5
print(list_data)

# 修改元组中第三个元素的第二个元素

tuple_data = (1, 1.1, [1, 2])
tuple_data[2][1] = 10
print(tuple_data)

# 扩展(空列表)

list_data3 = []
print(list_data3, type(list_data3))
list_data1 = list()
print(type(list_data1), list_data1)

 内置命令

 有无返回值:若一内置命令没有返回值因此该命令是在原列表上操作的

1.append

append(self, object, /)     附加(自身(可以省略), 对象, /(暂时也可省略))
                            至少上传参数"对象"该函数,该命令无返回值
     Append object to the end of the list.    (将对象追加到列表的末尾)
list_data2 = [1, 2, 3]
# 在上述列表末尾插入数字4
list_data2.append(4)
print(list_data2)

2.insert

insert(self, index, object, /)    插入(自身(可以省略), 索引, 对象, /)
        Insert object before index.  在索引之前插入对象。该命令无返回值
在3之前插入数字5
list_data2.insert(2, 5)
print(list_data2)

3.clear

clear(self, /)     清除(自身(可以省略), /)
    Remove all items from list.      删除列表中所有项目   该命令无返回值
删除列表中所有项目
list_data2.clear()
print(list_data2)

 4.copy

copy(self, /)   复制(自身(可以省略), /)
      Return a shallow copy of the list.   返回列表的浅副本
浅拷贝和深拷贝
分别打印浅拷贝和深拷贝,并且打印结果中每一个元素的id,并观察。
打印序列中元素id的方法
 id(序列中对应元素的下标)

分别用浅拷贝和深拷贝拷贝list_data 

list_data = [1, 2, [1, 2]]
shallow_data = list_data.copy()
print(shallow_data)
from copy import deepcopy
deep_data = deepcopy(list_data)
print(deep_data)

 同时打印出用浅拷贝和深拷贝拷贝打印后list_data内的所有元素ID(含内层列表)


print(f"{'raw_id':^20}{'1st_id':^20}{'2nd_id':^20}{'3rd_id':^20}{'3-1_id':^20}{'3-1_id':^20}")
print(60*'——')
print(f"{id(list_data):^20}{id(list_data[0]):^20}{id(list_data[1]):^20}{id(list_data[2]):^20} \
{id(list_data[2][0]):^20}{id(list_data[2][1]):^20}")
print(60*'——')
print(f"{id(shallow_data):^20}{id(shallow_data[0]):^20}{id(shallow_data[1]):^20}{id(shallow_data[2]):^20} \
{id(shallow_data[2][0]):^20}{id(shallow_data[2][1]):^20}")
print(60*'——')
print(f"{id(deep_data):^20}{id(deep_data[0]):^20}{id(deep_data[1]):^20}{id(deep_data[2]):^20} \
{id(deep_data[2][0]):^20}{id(deep_data[2][1]):^20}")
运行结果:
'''
D:\AXXZX\Python\python\python.exe D:\python_code\lit.py 
[1, 2, [1, 2]]
[1, 2, [1, 2]]
       raw_id              1st_id              2nd_id              3rd_id              3-1_id              3-1_id       
————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
   2055355333760       2055346913520       2055346913552       2055352086848        2055346913520       2055346913552    
————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
   2055355321024       2055346913520       2055346913552       2055352086848        2055346913520       2055346913552    
————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
   2055355333504       2055346913520       2055346913552       2055355333248        2055346913520       2055346913552    

Process finished with exit code 0

'''
得出如图所示结果:

总结:

 浅拷贝:只复制元素一元素二以及元素三(及列表的地址比)的地址,及只复制外层元素的地址。

 深拷贝:将列表完整的复制一份,及外层元素内层元素的所有地址都给予复制

5.extend

extend(self, iterable, /)        扩展(自身(可以省略), 可迭代对象, /)
       Extend list by appending elements from the iterable.
       通过从可迭代对象中追加元素来扩展列表。                  该命令无返回值
    可迭代对象:range(),字符串,字节,元组,列表
 获取列表长度:len(object)->  object:序列及字符串,字节,元组,列表

 扩展一个range(4, 10)

list_data = [1, 2, 3]
list_data.extend(range(4, 10))
print(list_data)
 扩展一个元组
list_data = [1, 2, 3]
list_data.extend((4, 5, 6, 7, 8, 9))
print(list_data)
 扩展一个列表
list_data = [1, 2, 3]
list_data.extend([4, 5, 6, 7, 8, 9])
print(list_data)
 扩展一个字符串
list_data = [1, 2, 3]
list_data.extend("1234567")
print(list_data)
# 扩展一个字节
list_data = [1, 2, 3]
list_data.extend(b'456789')
print(list_data)

6.pop

pop(self, index=-1, /)      移除/弹出(自身(可以省略), 索引=-1, /)
     Remove and return item at index (default last).
     移除并返回索引处的项目,(默认是最后一个)
     Raises IndexError if list is empty or index is out of range.
     引发索引错误如果列表为空或索引超出范围
list_data = [1, 2, 3]
 弹出列表最后一个元素
list_data1 = list_data.pop(-1)
print(list_data1)
 弹出列表第二个元素
list_data = [1, 2, 3]
list_data2 = list_data.pop(1)
print(list_data2)
print(list_data)
 ascii码与字符的转换
 ord(字符)
 chr(ascii码)
print(ord("a"), type(ord("a")))
print(ord("A"))
print(chr(100))

7.reverse

reverse(self, /)       倒值(自身(可以省略), /)
      Reverse *IN PLACE*.   反向,到位
 reverse与切片的区别:
 reverse不会产生一个新的序列,该命令会使原序列发生改变
list_data = [1, 2, 3, 1, 1, 1, 3, 2]
list_data.reverse()
print(list_data)
而切片会产生一个新的序列且原序列不发生改变及
list_data = [1, 2, 3, 1, 1, 1, 3, 2]
list_data5 = list_data[::-1]
print(list_data5)
print(list_data)

 8. count

 count(self, value, /)              计数(自身(可以省略), 值, /)
      Return number of occurrences of value.   返回值出现的次数
list_data = [1, 2, 3, 1, 1, 1, 3, 2]
list_data.reverse()
print(list_data)
 查看元素1,2,3出现的次数
print(list_data.count(1))
print(list_data.count(2))
print(list_data.count(3))

9.index

index(self, value, start=0, stop=9223372036854775807, /) 值:stop=9223372036854775807只是对整数的限制
 索引,下标(自身(可以省略), 值,开始=0, 停止=9223372036854775807, /)
        Return first index of value.    返回值的第一个索引
list_data = [1, 2, 3, 1, 1, 3, 1, 2]
 解索列表中所有元素1的下标
pos1 = list_data.index(1)
pos2 = list_data.index(1, pos1+1)
pos3 = list_data.index(1, pos2+1)
pos4 = list_data.index(1, pos3+1)
print(pos1, pos2, pos3, pos4)

10.remove

remove(self, value, /)          删除(自身(可以省略), 值,/)
     Remove first occurrence of value.     删除第一次出现的值
     Raises ValueError if the value is not present.   如果值不存在则引发ValueError
list_data = [1, 2, 3, 2, 3]
 弹出列表中元素3
list_data.remove(3)
print(list_data)
 弹出列表中元素2
list_data = [1, 2, 3, 2]
list_data2 = list_data.remove(2)
print(list_data)

11.sort

sort(self, /, *, key=None, reverse=False)   排序(自身(可以省略), /, *, key=None, reverse=False)
                *, / 特殊字符规定传参格式   * 规定传参格式只能是key=vaule,而 / 规定传参格式只能是vaule
    Sort the list in ascending order and return None.、
    升序对列表进行排序并返回  无...

数字列表排序

list_data = [1, 3, 2, 5, 4]
list_data.sort()
print(list_data)  # [1, 2, 3, 4, 5]
list_data = [1, 3, 2, 5, 4]
list_data.sort(key=None, reverse=False)
print(list_data)  # [1, 2, 3, 4, 5]
list_data = [1, 3, 2, 5, 4]
list_data.sort(key=None, reverse=True)
print(list_data)    # [5, 4, 3, 2, 1]
单词列表排序
fruit_list = ['banana', 'grape', 'durian', 'apple', 'mango', 'orange', 'watermelon', 'pineapple', 'peach']
fruit_list.sort(key=None, reverse=False)
print(fruit_list)    # ['apple', 'banana', 'durian', 'grape', 'mango', 'orange', 'peach', 'pineapple', 'watermelon']


fruit_list = ['banana', 'grape', 'durian', 'apple', 'mango', 'orange', 'watermelon', 'pineapple', 'peach']
fruit_list.sort(key=None, reverse=True)
print(fruit_list)    # ['watermelon', 'pineapple', 'peach', 'orange', 'mango', 'grape', 'durian', 'banana', 'apple']
将fruit_list 按照尾字母排序
fruit_list = ['banana', 'grape', 'durian', 'apple', 'mango', 'orange', 'watermelon', 'pineapple', 'peach']
fruit_list.sort(key=lambda x: x[-1])
print(fruit_list)     # ['banana', 'grape', 'apple', 'orange', 'pineapple', 'peach', 'durian', 'watermelon', 'mango']
'''
总结:
key=None(控制排序规则):
          数字列表会按照从小到大的顺排序,
          单词列表,首字母不同时会按照首字母顺序排序,首字母相同时会按照第二字母顺序排序以此类推
reverse(相反的)当 reverse=True时会将已排好的列表倒置,当reverse=False是列表不会发生改变

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱玩网络的小石

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值