python的几个简单应用

  1. 将任意序列分解为单独的元素
    任何序列(或可迭代的对象),都可以通过一个简单的赋值操作来分解为单独的变量
>>> p = (4, 5)
>>> x, y = p
>>> x
4
>>> y
5
>>> s = 'hello'
>>> a, b, c, d, e = s
>>> a
h
>>> b
e
  1. 从任意长度的可迭代对象中分解元素
    python的“*表达式”可以解决这个问题。
>>> record = ('Dave', 'dave@example.com', '773-555-1212', '847-555-1212')
>>> name, email, *phone_numbers = record
>>> name
'Dave'
>>> email
'dave@example.com'
>>> phone_numbers
['773-555-1212', '847-555-1212']
  1. 找到最大或最小的N个元素
    python heapq模块有两个函数 nlargest()nsmallest(),并且函数中有 key 参数可以在复杂的数据中指定排序的依据。
>>> import heapq
>>> nums = [1, 8, 2, 23, 7, -4, 18, 23 ,42, 37, 2]
>>> print(heapq.nlargest(3, nums))
[42, 37, 23]
>>> print(heapq.nsmallest(3, nums))
[-4, 1, 2]
  1. 实现队列
    collections.deque 可以很简单的实现队列。deque()中也可以指定参数 maxlen 来限制队列的大小。
>>> from collections import deque
>>> q = deque()
>>> q.append(1)
>>> q.append(2)
>>> q.append(3)
>>> q
deque([1, 2, 3])
>>> q.appendleft(4)
>>> q
deque([4, 1, 2, 3])
>>> q.pop()
3
>>> q
deque([4, 1, 2])
>>> q.popleft()
4
  1. 在字典中将键映射到多个值上
    字典是一种关联容器,每个键都映射到一个单独的值上。如果想要键映射到多个值,需要将多个值保存到另一个容器如列表或集合中。如果需要保留元素插入的顺序,用列表;如果希望消除重复元素且不在一顺序,用集合。
>>> dict_example = {}
>>> dict_example.update({'a':1,'b':2})
>>> dict_example 
{'a': 1, 'b': 2}

想让键映射多个值,可以这样:

>>> dict_example.setdefault('c', {})['c_1'] = [1, 2, 3]
>>> dict_example.setdefault('c', {})['c_2'] = [4, 5, 6]
>>> dict_example
{'a': 1, 'b': 2, 'c': {'c_1': [1, 2, 3], 'c_2': [4, 5, 6]}}

如果想输出字典转json的结构化格式,可以这样:

>>> import json
>>> print(json.dumps(dict_example, sort_keys=True, indent=4, separators=(', ', ': ')))
{
    "a": 1, 
    "b": 2, 
    "c": {
        "c_1": [
            1, 
            2, 
            3
        ], 
        "c_2": [
            4, 
            5, 
            6
        ]
    }
}
  1. 让字典保持有序
    要控制字典中元素的顺序,可以使用 collections模块中的 OrderedDict类。
    OrderedDict内部维护了一个双向链表,第一个新加入的元素被放置在链表末尾。但是OrderedDict的大小是普通字典的2倍多。所以在使用的过程中需要考虑数据的大小。
>>> from collections import OrderedDict
>>> d = OrderedDict()
>>> d.update({'foo':1, 'bar':2, 'spam': 3, 'grok': 4})
>>> d
OrderedDict([('foo', 1), ('bar', 2), ('spam', 3), ('grok', 4)])
>>> print(json.dumps(d, sort_keys=True, indent=4, separators=(', ', ': ')))
{
    "bar": 2, 
    "foo": 1, 
    "grok": 4, 
    "spam": 3
}
  1. 将多个映射合并为单个映射
    将多个字典合并。可以使用 ChainMap()函数
>>> from collections import ChainMap
>>> a = {'x':1, 'z':3}
>>> a
{'x': 1, 'z': 3}
>>> b = {'y':2, 'z': 4}
>>> b
{'y': 2, 'z': 4}
>>> c = ChainMap(a,b)
>>> c
ChainMap({'x': 1, 'z': 3}, {'y': 2, 'z': 4})
>>> print(c['x'], c['y'], c['z'])
1 2 3
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值