python进阶----推导式,异常

本文探讨了Python中列表、字典及集合的高级用法,包括列表推导式、字典推导式和集合推导式的应用实例,并介绍了如何优雅地处理多种异常情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#ListDictSet
#variable = [out_exp for out_exp in input_list if out_exp ==2]
multiples = [i for i in range(30) if i %3 is 0]
multiples =[i for i in range(20) if i //2 is not 0]
multiples= [x**2 for x in range(10)]
print(multiples)
mcase = {'a': 10, 'b': 34, 'A': 7, 'Z': 3}
#这个是字典的推导式
mc = {
	k.lower() : mcase.get(k.lower(),1)
	for k in mcase.keys()
}
print(mc)
#快速对换一个字典的键和值:
mc1={v: k for k, v in mcase.items()}
print(mc1)
#集合推导式(set comprehensions)
#它们跟列表推导式也是类似的。 唯一的区别在于它们使用大括号{}。 举个例子
squared = {x**2 for x in [1, 1, 2]}
print(squared)

"""异常
处理多个异常
"""
# try:
# 	file =open('test.txt','rb')
# except IOError as e:
# 	raise "happpen a IOError !"
#第一种方法需要把所有可能发生的异常放到一个元组里
try:
	 file = open('test.txt','rb')
except (IOError,EOFError) as e:
	print("多种异常") 
else:#我们常常想在没有触发异常的时候执行一些代码。这可以很轻松地通过一个else从句来达到。
	# 这里的代码只会在try语句里没有触发异常时运行,
    # 但是这里的异常将 *不会* 被捕获
	print("else exception ")
finally:#最后总会执行
	print("finaly do some thing!")
# try:
# 	file =open('text.txt','rb')
# except IOError as e:
# 	raise e
# except EOFError as e:
# 	raise e
# except Exception:
# 	raise 
#lambda表达式 lambda 参数:操作(参数)
add = lambda x,y : x + y
print(add(3,5))
a = [(1, 2), (4, 1), (9, 10), (13, -3)]
print(a.sort(key = lambda x : x[1]))
print(a)
list1 =[4,2,3]
list2 = [12,13,14]
data = zip(list1,list2)
data = sorted(data)
list1,list2 = map(lambda t: list(t), zip(*data))
print(list1)
print(list2)

### Python字典的进阶用法 在Python中,字典是一种非常强大的数据结构,它允许以键值对的形式存储数据。以下是一些关于字典的进阶用法,这些技巧可以帮助开发者更高效地使用字典[^2]。 #### 1. 默认字典(`defaultdict`) `collections.defaultdict` 是 `collections` 模块中的一个类,它为字典提供了一个默认值,避免了在访问不存在的键时抛出异常的情况。 ```python from collections import defaultdict # 创建一个默认值为列表的字典 dd = defaultdict(list) dd['a'].append(1) dd['a'].append(2) print(dd) # 输出: defaultdict(<class 'list'>, {'a': [1, 2]}) ``` #### 2. 嵌套字典 嵌套字典是指在一个字典中包含另一个字典作为其值。这种结构非常适合表示多维数据。 ```python nested_dict = { 'user1': {'name': 'Alice', 'age': 25}, 'user2': {'name': 'Bob', 'age': 30} } print(nested_dict['user1']['name']) # 输出: Alice ``` #### 3. 字典推导式 字典推导式是生成字典的一种简洁方式,类似于列表推导式。 ```python squares = {x: x**2 for x in range(5)} print(squares) # 输出: {0: 0, 1: 1, 2: 4, 3: 9, 4: 16} ``` #### 4. 使用`setdefault`方法 `setdefault` 方法可以用来设置默认值,如果键不存在则添加该键,并返回默认值。 ```python d = {} d.setdefault('key', []).append('value') print(d) # 输出: {'key': ['value']} ``` #### 5. 合并字典 在Python 3.5及以上版本中,可以使用解包操作符 `**` 来合并两个字典。 ```python dict1 = {'a': 1, 'b': 2} dict2 = {'b': 3, 'c': 4} merged_dict = {**dict1, **dict2} print(merged_dict) # 输出: {'a': 1, 'b': 3, 'c': 4} ``` #### 6. 字典视图对象 从Python 3开始,字典的 `.keys()`、`.values()` 和 `.items()` 方法返回的是视图对象,而不是列表。这使得它们更加高效。 ```python d = {'a': 1, 'b': 2} keys_view = d.keys() print(keys_view) # 输出: dict_keys(['a', 'b']) ``` #### 7. 字典排序 可以通过 `sorted()` 函数对字典进行排序,通常是对键或值进行排序。 ```python d = {'apple': 10, 'orange': 20, 'banana': 5} sorted_d = dict(sorted(d.items(), key=lambda item: item[1])) print(sorted_d) # 输出: {'banana': 5, 'apple': 10, 'orange': 20} ``` ### 总结 以上列举了Python字典的一些进阶用法,包括 `defaultdict`、嵌套字典、字典推导式、`setdefault` 方法、合并字典、字典视图对象以及字典排序等。这些技巧能够帮助开发者更灵活地处理字典数据结构[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值