Skip to content

python数据容器类型

873字约3分钟

后端python

2023-03-03

数据容器

类似 js 里的数组, 但是可以自动处理一些内容

一共有下列这几种

  • 列表
  • 元组
  • 集合
  • 字典

列表

把一个元素添加到列表的结尾: list.append(x)

在列表末尾追加列表: list.extend(list)

在指定位置插入一个元素: list.insert(i, x)

i 为插入的索引, x 为插入的值

删除列表中值为 x 的第一个元素: list.remove(x)

如果没有这样的元素, 就会返回一个错误.

从列表的指定位置移除元素 并且返回索引元素

list1 = ['Google', 'JD', 'Taobo']
print(list1.pop(1))
print(list1)
# 返回结果:
# JD
# ['Google', 'Taobo']

移除列表中的所有项 list.clear()

返回列表中第一个值为 x 的元素的索引: list.index(x)

如果没有匹配的元素就会返回一个错误.

统计元素 x 在列表中出现的次数. list.count(x)

对列表中的元素进行排序 list.sort()

倒排列表中的元素: list.reverse()

同时遍历两个或更多的序列, 可以使用 zip() 组合:

questions = ['name', 'quest', 'favorite color']
answers = ['lancelot', 'the holy grail', 'blue']

for (q, a) in zip(questions, answers):
    print(f"What is your {q}?  It is {a}.")

# 返回结果:
# What is your name?  It is lancelot.
# What is your quest?  It is the holy grail.
# What is your favorite color?  It is blue.

反向遍历一个列表

for i in reversed(range(1, 10, 2)):
    print(i)

# 返回结果:
# 9
# 7
# 5
# 3
# 1

列表推导式

可以直接改变循环时传入的值

a_range = ["1","2","3"]
# 让循环时的值转变类型
a_list = [int(x) for x in a_range]
print(a_list)

# 返回结果: [1, 2, 3]
a_range = range(10)
# 让循环时的值变成x*x
a_list = [x * x for x in a_range]
print(a_list)

# 返回结果: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

元组

不可修改的 列表

获取元素

t = (12345, 54321, 'hello!')
print(t[0])

# 返回结果: 12345

获取整个元组

print(t)

# 返回结果: (12345, 54321, 'hello!')

集合

集合是一个无序不重复元素的集.

提示

如果要创建一个空集合, 必须用 set() 而不是 {}

创建集合

basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
print(basket)
# 返回结果: {'orange', 'banana', 'pear', 'apple'}

检测成员

print('orange' in basket)
# 返回结果: True

字典

无序的 键=>值 对集合

添加字典元素

tel = {'jack': 4098, 'sape': 4139}
tel['guido'] = 4127
print(tel)
# 返回结果: {'sape': 4139, 'guido': 4127, 'jack': 4098}

通过键获取值

print(tel['jack'])
# 返回结果: 4098

删除字典的一部分

del tel['sape']
tel['irv'] = 4127
print(tel)
# 返回结果: {'guido': 4127, 'irv': 4127, 'jack': 4098}

将所有的键组成一个列表

这里有两种, 一种是用 list 函数

print(list(tel.keys()))
# 返回结果: ['irv', 'guido', 'jack']

一种是直接用中括号框起来

print([tel.keys()])
# 返回结果: [dict_keys(['jack', 'sape'])]

判断存在

print('guido' in tel)
# 返回结果: True

根据元组列表来构建字典

print(dict([('sape', 4139), ('guido', 4127), ('jack', 4098)]))
# 返回结果: {'sape': 4139, 'jack': 4098, 'guido': 4127}

如果关键字只是简单的字符串, 使用关键字参数指定键值对有时候更方便

print(dict(sape=4139, guido=4127, jack=4098))
# 返回结果: {'sape': 4139, 'jack': 4098, 'guido': 4127}

列表推导式指定特定的键值对

print({x: x**2 for x in (2, 4, 6)})
# 返回结果: {2: 4, 4: 16, 6: 36}

字典中遍历

knights = {'gallahad': 'the pure', 'robin': 'the brave'}
for k, v in knights.items():
    print(k, v)

# 返回结果:
# gallahad the pure
# robin the brave