元祖
关系转换
列表 => 字符串
tar_list = [1,2,3,4]
# 如果元素是字符串
tar_str = [{",".join(tar_list)}]
# 如果元素是数字
tar_str = [{",".join([str(e) for e in tar_list])}]
字符串 => 列表
tar = '1,2,3,4'
tar_list = tar.split(',')
列表 => 字典
tar_list = ['a', 'b']
tar_dict = { each:tar_list[each] for each in tar_list }
# 最后结果: { '1':'a', '2':'b' }
基础操作
基础使用
单个元祖使用时,需要添加逗号 t = (1,)
括号( )既可以表示tuple,又可以表示数学公式中的小括号。所以,如果元组只有1个元素,就必须加一个逗号,防止被当作括号运算。
列表元素操作
操作 | 相关API | 说明 |
---|---|---|
追加:在末尾添加单个元素 | list.append(item) | 入栈 |
合并1:在末尾添加多个元素 | list1.extend(list2) | |
合并2:使用 "+" 列表合并 与 extend() 是等价的 | list3 = list1 + list2 | |
复制:类似与 [:] 复制一个列表 | new_list = list.copy() | |
插入:索引处插入元素 | list.insert(index,item) | 在 index |
删除:移除指定索引位置的元素 | del list[index] 、del list[start:end] | |
删除:会移除列表中第一个匹配的元素 | list.remove(item) | 没有返回值 |
删除:删除指定索引的元素 | list.pop(index) | 返回被删除的元素 |
删除:删除一个元素 | list.pop() | 出栈 |
删除:从头部 | ||
清空:清空一个数组 | list.clear() | |
统计:返回指定元素的个数 | list.count(item) | 返回 item 出现的次数 |
查找:查找一个元素是的索引是多少 | list.index(item) | |
查询:判断一个元素是否存在列表中 | tem in list | |
排序:原数组重新排序 | list.sort | 修改原数组 |
排序:返回新的排序好的数组 | sorted(list) | |
反转:反转(改变源数据) | list.reverse() |
切片操作
操作 | 命令 | 说明 |
---|---|---|
方向:从右往左切 | list[-1:-5:2] | |
方向:从左往右切 | list[-1:-5:-1] | |
复制:列表 | new_list = list[:] | |
步长:第三个为步长,跳着切 | list[0:-1:2] | |
反转:(不改变源数据) | new_list = list[::-1] | |
列表推导
- 优点:代码缩减,不需要新建空列表,内置append方法
- 缺点:不易于阅读,如果是处理复杂流程,不应使用
基础语法
# 传统写法
new_list = []
for each_item in data:
new_list.append(func(data))
# 推导写法
new_list = [func(data) for each_item in data]
# 原生写法
res_list = []
for each in ["string", "int", "float", "params"]:
each_res = return_list(each)
res_list.append(each_res)
# 将列表展开,组成新的单层列表
res = []
for each in res_list:
if len(each) > 0:
res += each
# 推导写法
res = [for each in ["string", "int", "float", "params"] for res in return_list(each) if len(res)>0]
字典中使用
# 传统写法
new_dict={}
for each in tar:
new_dict[each] = tar[each]
# 推导写法
new_dict = { each:tar[each] for each in tar if tar[each] }
#{ new_dict[each]:tar[each], ...}
使用示例
列表推导
# 将分钟转换为时间
mins = [1, 2, 3]
secs = [m*60 for m in mins]
# 支持多层套用
secs = sorted([str(m*60) for m in [1, 2, 3]])
# [60, 120, 180]
# ['60', '120', '180']
# 将字母转换成大写
lower = ["I", "don't", "like", "pan"]
upper = [m.upper() for m in lower]
# ["I", "DON'T", "LIKE", "PAN"]
# 自身的元素处理,结果返回自身
count = [float(s) for s in count]
给字段格式的列表进行排序
res_list = [
{"id":2, "name":"xxxx"}
{"id":4, "name":"xxxx"}
{"id":1, "name":"xxxx"}
{"id":3, "name":"xxxx"}
]
# 根据 id 字段进行排序
res_list_sorted_by_id = sorted(res_list, key=lambda item:item['id'])
集合从头部删除数据
tar = [0, 1, 2, 3, 5]
num_set = set(tar)
num_set.pop()
print(num_set)