码迷,mamicode.com
首页 > 其他好文 > 详细

An Array of Sequences

时间:2020-01-01 15:01:38      阅读:81      评论:0      收藏:0      [点我收藏+]

标签:using   metro   func   appear   col   一个   for   seq   bsp   

1.  Listcomps (List comprehensions) do everything the map and filter functions do. (map 函数和 filter函数能做的,列表生成式都可以做)

列表生成式和 map, filter 函数运行时间的比较示例:

import timeit

TIMES = 10000

SETUP = """
symbols = ‘$¢£¥€¤‘
def non_ascii(c):
    return c > 127
"""
timeit.timeit()

def clock(label, cmd):
    res = timeit.repeat(cmd, setup=SETUP, number=TIMES)
    print(label, *({:.3f}.format(x) for x in res))


clock(listcomp        :, [ord(s) for s in symbols if ord(s) > 127])
clock(listcomp + func :, [ord(s) for s in symbols if non_ascii(ord(s))])
clock(filter + lambda :, list(filter(lambda c: c > 127, map(ord, symbols))))
clock(filter + func   :, list(filter(non_ascii, map(ord, symbols))))


# 测试一段代码的运行时间,可以用 timeit 模块
"""
timeit 模块中主要函数有两个:
1. timeit(stmt=‘pass‘, setup=‘pass‘, timer=<defaulttimer>, number=1000000)
    返回:
            返回执行stmt这段代码number遍所用的时间,单位为秒,float型

       参数:
            stmt:要执行的那段代码

            setup:执行代码的准备工作,不计入时间,一般是import之类的

            timer:这个在win32下是time.clock(),linux下是time.time(),默认的,不用管

            number:要执行stmt多少遍
            
2. repeat(stmt=‘pass‘, setup=‘pass‘, timer=<defaulttimer>, repeat=3, number=1000000)
    这个函数比timeit函数多了一个repeat参数而已,表示重复执行timeit这个过程多少遍,返回一个列表,表示执行每遍的时间;repeat默认为3
"""

timeit 参考链接:https://www.cnblogs.com/itcomputer/articles/4578769.html

 

2. Tuple

In [44]: traveler_ids = [(USA,31195855), (BRA,CE342567), (ESP, XDA205856)]

In [45]: for passport in sorted(traveler_ids):
    ...:     print(%s/%s % passport)
    ...:
BRA/CE342567
ESP/XDA205856
USA/31195855

# The % formatting operator understands tuples and treats each item as a separate field.


# Tuple Unpacking
In [46]: t = (20, 8)

In [47]: divmod(*t)
Out[47]: (2, 4)

In [48]: quotient,remainder = divmod(*t)

In [49]: quotient, remainder
Out[49]: (2, 4)

# Using * to grab excess items
In [50]: a, b, *rest = range(5)

In [51]: a, b, rest
Out[51]: (0, 1, [2, 3, 4])

In [52]: a, b, *rest = range(2)

In [53]: a, b, rest
Out[53]: (0, 1, [])

In [54]: a, *body, c, d = range(5)

In [55]: a, body, c, d
Out[55]: (0, [1, 2], 3, 4)

# In the context of parallel assignment, the * prefix can be applied to exactly one variable, but it can appear in any position


# Nested Tuple Unpacking
metro_areas = [
    (Tokyo, JP, 36.933, (35.689722, 139.691667)),
    (Mexico City, MX, 20.142, (19.433333, -99.133333)),
    (New York-Newark, US, 20.104, (40.808611, -74.020386)),
]

print({:15} | {:^9} | {:^9}.format(‘‘, lat., long.))
fmt = {:15} | {:9.4f} | {:9.4f}

# By assigning the last field to a tuple, we unpack the coordinates.
for name, cc, pop, (latitude, longitude) in metro_areas:
    if longitude <= 0:
        print(fmt.format(name, latitude, longitude))


# Output:
"""
                |   lat.    |   long.  
Mexico City     |   19.4333 |  -99.1333
New York-Newark |   40.8086 |  -74.0204
"""

字符串格式化参考链接: https://www.cnblogs.com/songdanlee/p/11105807.html 

 

 

 

 

 

 

 

 

 

 

 

end

An Array of Sequences

标签:using   metro   func   appear   col   一个   for   seq   bsp   

原文地址:https://www.cnblogs.com/neozheng/p/12128625.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!