iOS开发人员如何学习Python编程6-集合类型1

85 阅读4分钟

这是我参与11月更文挑战的6天,活动详情查看:2021最后一次更文挑战

list

Python的列表是一个有序可重复的元素集合,可嵌套迭代修改分片追加删除成员判断
从数据结构角度看,Python的列表是一个可变长度的顺序存储结构,每一个位置存放的都是对象的指针。

列表操作

>>> li1 = [1,2,3]
>>> li1[1]
2

>>> li1[1] = 5
>>> li1
[1, 5, 3]

>>> li1[1:] = [6,7]
>>> li1
[1, 6, 7]

特殊操作:

# 语句                            结果                              描述
[1, 2, 3] + [4, 5, 6]          # [1, 2, 3, 4, 5, 6]                 组合两个列表
l1 = [1, 2, 3]
l2 = [4, 5, 6]
print(l1.__add__(l2))          # 底层调用了__add__方法
    
['Hi!'] * 4                    # ['Hi!', 'Hi!', 'Hi!', 'Hi!']        列表的乘法
l1 = [1, 2, 3]
print(l1.__mul__(3))

常用函数:

# 函数                作用
>>> l1 = [1, 2, 3]
>>> len(l1)         # 返回列表元素个数,也就是获取列表长度 l1.__len__()
3
>>> max(l1)         # 返回列表元素最大值  max(l1)  max(1,2,3,4)
3
>>> min(l1)         # 返回列表元素最小值
1
>>> list('hello')   # 将序列转换为列表
['h', 'e', 'l', 'l', 'o']

>>> s = list((1, "a", "b", 2))
>>> s
[1, 'a', 'b', 2]

>>> max(s)          # 不能混合不同类型进行最大最小求值
Traceback (most recent call last):
  File "<pyshell#20>", line 1, in <module>
    max(s)
TypeError: '>' not supported between instances of 'str' and 'int'

排序和反转:

>>> li = [1,2,3,4,5,2,1,3,1]
>>> li.reverse()            # 将列表反转 修改本身 *IN PLACE*
>>> li
[1, 3, 1, 2, 5, 4, 3, 2, 1]
>>> li.sort()               # 排序,默认升序 L.sort(key=None, reverse=False)
>>> li
[1, 1, 1, 2, 2, 3, 3, 4, 5]
>>> li.sort(reverse=True)   # reverse=True 降序
>>> li
[5, 4, 3, 3, 2, 2, 1, 1, 1]

删除元素

使用del语句或者remove()pop()方法删除指定的元素

>>> lis = ["a", "b", "c"]
>>> del lis[0]      # 根据索引删除
>>> lis
['b', 'c']
>>> lis.remove("b") # 直接根据值进行删除
>>> lis
['c']
>>> lis.pop()       # 弹出最后一个
'c'
>>> lis
[]

l1 = [1, 'hello', 1]

l2 = l1.pop(1)  # 根据索引来弹出 1为索引
print(l2)

切片(截取slice)

切片slice:指的是对序列进行截取,选取序列中的某一段,以冒号分割索引:

# start代表起点索引,省略start表示以0开始
# end代表结束点索引,省略end表示到列表的结尾
# step为步长默认为1
list[start:end:step]

*⚠️注意:区间是左闭右开的。
如果提供的是负整数下标,则从列表的最后开始往头部查找。
例如-1表示最后一个元素,-3表示倒数第三个元素。

切片过程中还可以设置步长,以第二个冒号分割,例如:

# 表示每隔多少距离取一个元素
list[3:9:2]

常用操作:

>>> l3 = ['a','b','c','d','e','f']
>>> l3[1]                           # 取'b'                  注意:index默认从0开始
'b'
>>> l3[2]                           # 取'c'
'c'
>>> l3[1:3]                         # 取['b', 'c']           注意:左闭右开
['b', 'c']
>>> l3[:3]                          # 取['a', 'b', 'c']      注意:start不写默认从头开始
['a', 'b', 'c']
>>> l3[2:]                          # 取['c', 'd', 'e', 'f'] 注意:end不写默认到最后           
['c', 'd', 'e', 'f']
>>> l3[:]                           # 取全部           
['a', 'b', 'c', 'd', 'e', 'f']
>>> l3[::2]                         # 取['a', 'c', 'e']      注意:步长为2
['a', 'c', 'e']
>>> l3[::-1]                        # 逆序        
['f', 'e', 'd', 'c', 'b', 'a']

多维列表(嵌套列表)

>>> a = [[1,2,3],[4,5,6],[7,8,9]]
>>> a[0][1]
2

列表的遍历

a = [1,2,3,4,5,6]
for i in a:                  # 遍历每一个元素本身
    print(i)

for i in range(len(a)):      # 遍历列表的下标,通过下标取值
    print(i, a[i])

x = 9
if x in a:                   # 进行是否属于列表成员的判断。该运算速度非常快。
    print("True")
else:
    print("False")

列表的内置方法

  • append(obj):在列表末尾添加新的对象。
  • count(obj):统计某个元素在列表中出现的次数。
  • extend(seq):在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)。
  • index(obj):从列表中找出某个值第一个匹配项的索引位置。
  • insert(index, obj):将对象插入列表。
  • pop(obj=list[-1]):移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。
  • remove(obj):移除列表中某个值的第一个匹配项。
  • reverse():反向列表中元素。
  • sort([func]):对原列表进行排序。
  • copy():复制列表。
  • clear():清空列表,等于del lis[:]
>>> li = [1,2,3]
>>> li.append([3,3])
>>> li
[1, 2, 3, [3, 3]]

>>> li = [1,2,3,[3,3]]
>>> li.count(3) 
1

>>> li = [1,2,3]
>>> li.extend([4,5])   
>>> li
[1, 2, 3, 4, 5]

>>> li = [1,2,3,2,3]
>>> li.index(3) 
2

>>> li = ['happy','year']
>>> li.insert(1,'new')  
>>> li
['happy', 'new', 'year']

>>> li = [1,2,3]
>>> li.clear() 
>>> li
[]