• cookbook 1. 数据结构和算法


    1.1 将序列分解为单独的变量

    任何可迭代的对象都可以通过一个简单的赋值操作来分解为单独的变量。唯一的要求是变量的总数和序列相吻合。

    p = (4,5)  # tuple
    x,y = p
    print(x)
    
    data = ['alice', 50, 91.1, (2012,12,21)]  # list & tuple
    name, shares, price, (year,mon,day) = data
    print(name)
    
    s = 'hello'   # string
    a,b,c,d,e = s
    print(c)
    

     在分解操作中,可能想丢弃某些特定的值。 通常可以用一个用不到的变量名,以此作为用不到的值的名称。

    data1 = ['amy', 45, 89.2, (2015, 8, 10)]
    _, shares, price, _ = data1
    print(shares)
    

    1.2 从任意长度的可迭代对象中分解元素

    语法: *expr 

    *expr 可以放任何位置,包括第一位。 不过不过如果可迭代对象的长度超过n,就会导致"too many values to unpack"的异常。

    # 例一
    record = ('dave', 'dave@example.com', '888-555-1212','746-666-1212')
    name, email, *phone_number = record
    print(phone_number)
    # 返回: ['888-555-1212', '746-666-1212']
    
    
    # 例二
    sales_record = [10,8,7,1,9,5,10,3]
    *trailing_qtrs, current_qtrs = sales_record
    print(trailing_qtrs)  # 返回:[10, 8, 7, 1, 9, 5, 10]
    print(current_qtrs)   # 返回:3
    
    
    # 例三:*expr 经常用于迭代一个变长的元组数列。
    record1 = [
        ('foo',1,2),
        ('bar', 'hello'),
        ('foo', 3,4)
    ]
    def do_foo(x,y):
        print("foo", x, y)
    
    def do_bar(s):
        print("bar", s)
    
    for tag, *args in record1:
        if tag == "foo":
            do_foo(*args)
        elif tag == "bar":
            do_bar(*args)
    
    
    # 例四: 字符串处理,与string.split()一起用
    line = "nobody:*:-2:-2:Unprivileged User:/var/empty:/usr/bin/false"
    uname, *field, homedir, sh = line.split(':')
    print(uname,"	", homedir, "	", sh)
    # 返回:nobody 	 /var/empty 	 /usr/bin/false
    

    1.3 保存最后N个元素

  • 相关阅读:
    用Python学分析
    用Python学分析
    描述性统计指标
    用Python学分析
    Python练习:哥德巴赫猜想
    用Python学分析
    用Python学分析:集中与分散
    用Python学分析
    Ubuntu安装中文输入法
    Kali Linux ettercap的使用
  • 原文地址:https://www.cnblogs.com/lg100lg100/p/7944649.html
Copyright © 2020-2023  润新知