Python数据结构常用操作

2024-06-24

python用起来很爽,其中一个原因就是,python对各种数据结构的操作是很灵活和方便的,总结了一些在项目中经常用到的方法。

字符串

字典

列表

数据类型互相转换

字典转列表

1、使用list()函数

test_dict = {
  'first':{'lang':'Java','desc':'web后端开发领域王者'},
  'second':{'lang':'JavaScript','desc':'web前端开发必学语言'},
  'third':{'lang':'python','desc':'世界上最好的语言'},
}

# 字典的键转为列表
key_list = list(test_dict.keys())
print(key_list) 
# ['first', 'second', 'third']

# 字典的值转为列表
value_list = list(test_dict.values())
print(value_list)
# [{'lang': 'Java', 'desc': 'web后端开发领域王者'}, {'lang': 'JavaScript', 'desc': 'web前端开发必学语言'}, {'lang': 'python', 'desc': '世界上最好的语言'}]

2、使用列表推导式直接从字典创建列表

关于推导式,在后面介绍

test_dict = {
  'first':{'lang':'Java','desc':'web后端开发领域王者'},
  'second':{'lang':'JavaScript','desc':'web前端开发必学语言'},
  'third':{'lang':'python','desc':'世界上最好的语言'},
}


# 字典键转为列表
keys_list = [key for key in test_dict]
print(key_list)
# ['first', 'second', 'third']

# 字典值转为列表
values_list = [test_dict[key] for key in test_dict]
print(value_list)

# [{'lang': 'Java', 'desc': 'web后端开发领域王者'}, {'lang': 'JavaScript', 'desc': 'web前端开发必学语言'}, {'lang': 'python', 'desc': '世界上最好的语言'}]

推导式

使用推导式可以根据已有的列表和字典方便快捷的创建新的列表和字典

列表推导式

根据已有的列表或其他可迭代对象快速创建新的列表

格式

[ item的表达式 for item in 可迭代对象 <判断> ]
# 基本用法:创建一个新列表,其中包含原列表中每个元素的平方
numbers = [1, 2, 3, 4, 5]
squares = [num**2 for num in numbers]
print(squares)  # 输出: [1, 4, 9, 16, 25]

# 添加条件判断:只包含大于等于3的数	
numbers = [1, 2, 3, 4, 5]
squares = [num for num in numbers if num >= 3]
print(squares)  # 输出: [3, 4, 5]

# 多层嵌套:创建一个全排列列表
colors = ['red', 'green']
permutations = [f'{x}-{y}' for x in colors for y in colors]
print(permutations) # 输出: ['red-red', 'red-green', 'green-red', 'green-green']

字典推导式

根据已有的字典或其他可迭代对象快速创建新的字典

格式

{k:v for k,v in 可迭代对象}
# 使用字典推导式创建一个新字典
keys = ['a', 'b', 'c']
values = [1, 2, 3]
dictionary = {k: v for k, v in zip(keys, values)}
print(dictionary)  # 输出: {'a': 1, 'b': 2, 'c': 3}

zip()函数

zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组。如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同。

list_a = ['a', 'b', 'c','d']
list_b = [1, 2, 3]

zipd = zip(list_a,list_b)
print(list(zipd)) # 输出: [('a', 1), ('b', 2), ('c', 3)]

# 解压
list_a,list_b = zip(*zip(list_a,list_b))
print(list_a) # 输出:('a', 'b', 'c')
print(list_b) #输出 :(1, 2, 3)

PREV
TCP拥塞控制
NEXT
Redis基础使用