跳至主要內容

11-列表「list」Dannie

AI悦创原创Python 1v1Python 基础笔记Python 1v1Python 基础笔记大约 9 分钟...约 2585 字

11-列表「list」Dannie

列表结构

image-20221014211325344
image-20221014211325344
In [82]: s = "aiyc"

In [83]: s_to_list = list(s)

In [84]: print(s_to_list)
['a', 'i', 'y', 'c']

获取列表中的某个元素

image-20221014212940674
image-20221014212940674

列表提取后, 可以直接相加, 例如:

grade=[98,99,95,80]
print(grade[0]+grade[-1])

输出: 178

但是 字符串, 提取后, 不能相加

获取列表中连续的几个元素

image-20221014213350532
image-20221014213350532
image-20221014213533191
image-20221014213533191

列表的切片赋值

image-20221014220616683
image-20221014220754287
image-20221014220754287

列表被切片后,重新赋值, 新赋值的数据位置和最原始的列表数据位置不一样了。

image-20221017211334492
numbers=[1,5]
print(numbers[1:1])

输出: [] ---输出为空, 因为指示列的1号位置, 直至列的最后前一位, 所以不是5, 也不是1 , 是 5和1之间。 所以为空

# 例子二:

numbers=[1,5]
numbers[1:1]=[2,3,4]
print(numbers)

# 输出: [1, 2, 3, 4, 5]
# 例子三:

numbers=[1,5]
numbers[1:4]=[]
print(numbers)

# 输出:[1]----因为 numbers[1:4] 数值不存在, 而且赋值为空, 也就是 numbers[1:5] 的1 之后被赋值为空。 所以 print (numbers) 只有 数值 [1]
# 例子四:
numbers=[1,2,3,4,5,5]
numbers[1:5]=[]
print(numbers)
# 输出: [1, 5]  ---因为 1:5 号位置指示的是 列别i[1,2,3,4,5,5] 中的 2,3,4,5 为 空, 所以列表只剩下 : [1, 5]

列表的长度「list length」

image-20221017212847460
image-20221017212847460

修改列表中的元素

image-20221017213117492
image-20221017213117492
numbers=[1,2,3,4,5,5]
numbers[0]='D'
print(numbers)
# 输出: ['D', 2, 3, 4, 5, 5]

向列表添加元素「append」

image-20221017213344134
image-20221017213344134
In [28]: lst = [1, 2, 3, 4, 5]

In [29]: lst.append(101010101010100110)

In [30]: lst
Out[30]: [1, 2, 3, 4, 5, 101010101010100110]

默认从原列表的最后添加元素。

删除列表中的元素「del」

image-20221017213948538
image-20221017213948538

del 是所有数据类型通用的,如果要删除某个数据类型中的特定数据,则需要该数据类型可以改变。另一种情况是:删除整个数据,那就无需区分是何种数据类型了。

numbers=['钥匙','毒药','解药']
del numbers[2]
print(numbers)

输出: ['钥匙', '毒药']

后半句话:

如果不指定删除特定数据,则删除整个变量。

image-20221017214525098
image-20221017214525098
# 例子 :
numbers=['钥匙',{1,2,3},'解药']
print(numbers)
del numbers[1]
print(numbers)
image-20221017215239912
image-20221017215239912
# 例子  : 元组不可变, 所以当整个数值是 元组的时候, 是删除不了元组内特定元素。例如:

numbers=(1,2,3,4,5)
print(numbers)
del numbers [1]
print(numbers)

# 输出: 
image-20221017215533013
image-20221017215533013

但是 你可以 删除整个元组

del numbers 是可以的。

但是 del numbers [2]是不可以的。

clear() 「清空列表」

In [1]: lst = [1, 2, 3, 4, 5]

In [2]: lst.clear() # 清空列表

In [3]: lst
Out[3]: []

count() 「统计元素出现的次数」

In [4]: lst = [1, 2, 3, 4, 5]

In [5]: lst.count(1) # 统计 1 出现的次数
Out[5]: 1

In [6]: lst = [1, 2, 3, 4, 5, 1, 1, 1, 1]

In [7]: lst.count(1) # 统计 1 出现的次数
Out[7]: 5

In [8]: lst = ["a", "a", "b", 3, 4, 3]

In [9]: lst.count("a")
Out[9]: 2

In [10]: lst.count("as")
Out[10]: 0

index() 「寻找元素第一次出现的下标」

In [12]: lst = ["a", "a", "b", 3, 4, 3]

In [13]: lst.index("a")  # 寻找 "a" 第一次出现的位置「下标」
Out[13]: 0

In [14]: lst.index("aaa")
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-14-19704ea32973> in <module>
----> 1 lst.index("aaa")

ValueError: 'aaa' is not in list

insert() 「insert 在特定位置插入元素」

In [15]: lst = ["a", "a", "b", 3, 4, 3]

In [16]: lst.insert(1, "Dannie")  # insert 在特定位置插入元素,在 1 号位,插入 "Dannie"

In [17]: lst
Out[17]: ['a', 'Dannie', 'a', 'b', 3, 4, 3]

pop() 「默认删除最后一个元素,也可以指定删除某位置的数据」

In [21]: lst = ["a", "a", "b", 3, 4, 3]

In [22]: lst.pop()
Out[22]: 3

In [23]: lst.pop() #  默认删除最后一个元素
Out[23]: 4

In [24]: lst.pop(2) #  也可以指定删除某位置的数据,删除 2 号位数据
Out[24]: 'b'

In [25]: lst
Out[25]: ['a', 'a', 3]

remove()

In [28]: lst = ["a", "a", "b", 3, 4, 3]

In [29]: lst.remove(4) # 删除指定元素

In [30]: lst
Out[30]: ['a', 'a', 'b', 3, 3]

In [31]: lst.remove("a") # 删除指定元素

In [32]: lst
Out[32]: ['a', 'b', 3, 3]

In [33]: lst.remove("as") # 删除指定元素
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-33-ae82557ed1c9> in <module>
----> 1 lst.remove("as") # 删除指定元素

ValueError: list.remove(x): x not in list

reverse()

In [34]: lst = ["a", "a", "b", 3, 4, 3]

In [35]: lst.reverse()

In [36]: lst
Out[36]: [3, 4, 3, 'b', 'a', 'a']

sort() 元素排序「默认升序排序」修改原本的列表

In [40]: lst = [1, 2, 2, 3, 4, 5, 6]

In [41]: lst.sort()

In [42]: lst
Out[42]: [1, 2, 2, 3, 4, 5, 6]

In [43]: lst = ["a", "g", "l", "c", "b"]

In [44]: lst.sort()

In [45]: lst
Out[45]: ['a', 'b', 'c', 'g', 'l']

In [46]: lst.sort(reverse=True)

In [47]: lst
Out[47]: ['l', 'g', 'c', 'b', 'a']

In [48]: lst.sort(reverse=False)

In [49]: lst
Out[49]: ['a', 'b', 'c', 'g', 'l']

sorted()

In [64]: lst = ['a', 'j', 'w', 'd', 'k', 'w', 'b', 'e', 'l', 'f', 'r', 'c', 'o']

In [65]: lst.sort() # 直接排序原本的列表

In [66]: lst
Out[66]: ['a', 'b', 'c', 'd', 'e', 'f', 'j', 'k', 'l', 'o', 'r', 'w', 'w']

In [67]: random.shuffle(lst)  #  打乱列表

In [68]: lst
Out[68]: ['k', 'c', 'b', 'l', 'j', 'd', 'a', 'r', 'f', 'o', 'w', 'w', 'e']

In [69]: sorted(lst)  # 生成排序好的列表,原本列表的顺序不会被改变,如需要得到改变的值,则需赋值
Out[69]: ['a', 'b', 'c', 'd', 'e', 'f', 'j', 'k', 'l', 'o', 'r', 'w', 'w']

In [70]: lst
Out[70]: ['k', 'c', 'b', 'l', 'j', 'd', 'a', 'r', 'f', 'o', 'w', 'w', 'e']

对比!!!!!!!!!!!!!!

lst = ['k', 'c', 'b', 'l', 'j', 'd', 'a', 'r', 'f', 'o', 'w', 'w', 'e']
print("操作之前 lst:", lst)
new_lst = sorted(lst)
print("操作后 lst:", lst)
print("new_lst:", new_lst)

输出:

操作之前 lst: ['k', 'c', 'b', 'l', 'j', 'd', 'a', 'r', 'f', 'o', 'w', 'w', 'e']
操作后 lst: ['k', 'c', 'b', 'l', 'j', 'd', 'a', 'r', 'f', 'o', 'w', 'w', 'e']
new_lst: ['a', 'b', 'c', 'd', 'e', 'f', 'j', 'k', 'l', 'o', 'r', 'w', 'w']
lst = ['k', 'c', 'b', 'l', 'j', 'd', 'a', 'r', 'f', 'o', 'w', 'w', 'e']
print("操作之前 lst:", lst)
lst.sort()
print("操作后 lst:", lst)

输出:

操作之前 lst: ['k', 'c', 'b', 'l', 'j', 'd', 'a', 'r', 'f', 'o', 'w', 'w', 'e']
操作后 lst: ['a', 'b', 'c', 'd', 'e', 'f', 'j', 'k', 'l', 'o', 'r', 'w', 'w']

sort 是 帮你把列表排序好,

sorted: 需要赋值, 是返回排序好的列表。 「它不会修改列表本身」

复习

Dannie 练习的例子:

study=["Dannie", "Anderson", "Curtis", "Mason"]
study.sort()
print(study) # ['Anderson', 'Curtis', 'Dannie', 'Mason']

study.sort(reverse=True)
print(study) # ['Mason', 'Dannie', 'Curtis', 'Anderson']

study_new=sorted(study)
print(study_new)  # 

输出:

['Anderson', 'Curtis', 'Dannie', 'Mason']
['Mason', 'Dannie', 'Curtis', 'Anderson']
['Anderson', 'Curtis', 'Dannie', 'Mason']

extend() 在列表尾部添加多个数据

In [2]: lst = [1, 2, 3, 4, 5, "aiyc"]

In [3]: lst.append(1)

In [4]: lst
Out[4]: [1, 2, 3, 4, 5, 'aiyc', 1]

In [5]: lst.append((1, 2, 3))

In [6]: lst
Out[6]: [1, 2, 3, 4, 5, 'aiyc', 1, (1, 2, 3)]

In [7]: z = ["a", "b", "c"]

In [8]: lst.extend(z)

In [9]: lst
Out[9]: [1, 2, 3, 4, 5, 'aiyc', 1, (1, 2, 3), 'a', 'b', 'c']

In [10]:
In [10]: lst = [1, 2, 3, 4]

In [11]: lst.extend((1, 2, 3, 4, 45))

In [12]: lst
Out[12]: [1, 2, 3, 4, 1, 2, 3, 4, 45]

In [13]: lst.extend({1, 2, 3, 4, 45})

In [14]: lst
Out[14]: [1, 2, 3, 4, 1, 2, 3, 4, 45, 1, 2, 3, 4, 45]

copy()

浅拷贝:

In [18]: x = [1, 2, 3, 4]

In [19]: y = x

In [20]: y[0] = "Dannie"

In [21]: y
Out[21]: ['Dannie', 2, 3, 4]

In [22]: x
Out[22]: ['Dannie', 2, 3, 4]
image-20221020215809546
image-20221020215809546
In [26]: lst
Out[26]: [1, 2, 3, 4]

In [27]: lst = [1, 2, 3, 4]

In [28]: x = lst.copy()

In [29]: x
Out[29]: [1, 2, 3, 4]

In [30]: lst
Out[30]: [1, 2, 3, 4]

In [31]: x[0] = 100

In [32]: x
Out[32]: [100, 2, 3, 4]

In [33]: lst
Out[33]: [1, 2, 3, 4]
image-20221021211525287
image-20221021211525287

https://pythontutor.com/render.html#mode=displayopen in new window

深拷贝「deepcopy()」

In [38]: lst = [1, 2, 3, [2, 3, 4]]

In [39]: x = lst.copy()

In [40]: x[0] = 100

In [41]: x
Out[41]: [100, 2, 3, [2, 3, 4]]

In [42]: x[3]
Out[42]: [2, 3, 4]

In [43]: x[3][1] = "AndersonHJB"

In [44]: x
Out[44]: [100, 2, 3, [2, 'AndersonHJB', 4]]

In [45]: lst
Out[45]: [1, 2, 3, [2, 'AndersonHJB', 4]]
image-20221021213446510
image-20221021213446510
In [46]: from copy import deepcopy

In [47]: lst = [1, 2, 3, [2, 3, 4]]

In [48]: x = deepcopy(lst)

In [49]: x[3][1] = "aiyc"

In [50]: x
Out[50]: [1, 2, 3, [2, 'aiyc', 4]]

In [51]: lst
Out[51]: [1, 2, 3, [2, 3, 4]]
image-20221021215214978
image-20221021215214978

课堂练习

s = "132569874"
lst = list(s)
# print(lst)
even_number = lst[::2]
# print(even_number)
even_number.sort(reverse=True)
# print(even_number)
lst[::2] = even_number
print(lst)
In [1]: s = "132569874"

In [2]: list(s)
Out[2]: ['1', '3', '2', '5', '6', '9', '8', '7', '4']

In [3]: lst = list(s)

In [4]: lst[::2]
Out[4]: ['1', '2', '6', '8', '4']

In [5]: even_number = lst[::2]

In [6]: even_number
Out[6]: ['1', '2', '6', '8', '4']

In [7]: even_number.sort(reverse=True)

In [8]: even_number
Out[8]: ['8', '6', '4', '2', '1']

In [9]: lst[::2] = even_number

In [10]: lst
Out[10]: ['8', '3', '6', '5', '4', '9', '2', '7', '1']

练习代码

s = "qwertyuioplkjhgfdsazxcvbnm"
lst=list(s)
print(lst)

lst_odd=lst[1::2]
print(lst_odd)
lst_odd.sort()
print (lst_odd)

lst[1::2]=lst_odd
print(lst)
s = "qwertyuioplkjhgfdsazxcvbnm"
lst=list(s)
print(lst)

lst_gap=lst[::3]
print(lst_gap)
lst_gap.sort(reverse=True)
print (lst_gap)
image-20221027213045001
image-20221027213045001
s = "qwertyuioplkjhgfdsazxcvbnm"
lst=list(s)
print(lst)

lst_gap=lst[::3]
print(lst_gap)
lst_gap.sort(reverse=True)
print (lst_gap)

lst[::3]=lst_gap
print (lst)

max

快速寻找序列中的最大值:

lst = [1, 1, 2, 2222222, 333, 444, 55, 66]
max_value = max(lst)
print(max_value)

输出:

2222222

min

快速寻找序列当中的最小值:

lst = [1, 1, 2, 2222222, 333, 444, 55, 66]
min_value = min(lst)
print(min_value)

Tips: 集合也可以使用哦。

上次编辑于:
贡献者: AndersonHJB,AI悦创
你认为这篇文章怎么样?
  • 0
  • 0
  • 0
  • 0
  • 0
  • 0
评论
  • 按正序
  • 按倒序
  • 按热度