4天学会python_Python学习笔记-第四天

常规导入

** import sys **

你只需要使用import一词,然后指定你希望导入的模块或包即可。通过这种方式导入的好处是可以一次性导入多个包或模块:

** import os, sys, time **

虽然这节省了空间,但是却违背了Python风格指南。Python风格指南建议将每个导入语句单独成行。

使用from语句导入

很多时候你只想要导入一个模块或库中的某个部分。我们来看看在Python中如何实现这点:

** from functools import lru_cache **

上面这行代码可以让你直接调用lru_cache。如果你按常规方式导入functools,那么你就必须像这样调用lru_cache:

** functools.lru_cache(*args) **

根据你实际的使用场景,上面的做法可能是更好的。在复杂的代码库中,能够看出某个函数是从哪里导入的这点很有用的。不过,如果你的代码维护的很好,模块化程度高,那么只从某个模块中导入一部分内容也是非常方便和简洁的。

当然,你还可以使用from方法导入模块的全部内容,就像这样:

** from os import * **

** 切片 **

#!/usr/bin/env python

# -*- coding: utf-8 -*-

# list 切片

L = ['chen', 'li', 'jiang', 'wen']

print L[0:4]

print L[:3]

print L[-2:]

L = range(100)

print L[:10]

print L[-10:]

# copy list

N = L[:]

print N

# tuple 切片

L = (1, 2, 3, 4, 5)

print L[0:3]

# 字符串切片

L = 'chenwenbo'

print L[0:3]

# 间隔三个

print L[::3]

# 间隔二个

print L[::2]

** 迭代 **

#!/usr/bin/env python

# -*- coding: utf-8 -*-

from collections import Iterable

# 迭代dict

dict = {'name': 'chenwenbo', 'age': 12}

# key

for o in dict:

print o

# value

for o in dict.itervalues():

print o

# item

for x, y in dict.iteritems():

print x

print y

# str

for str in "chenwenbo":

print str

# 判断对象是否可以迭代

print isinstance('chenwen', Iterable)

# Python内置的enumerate函数可以把一个list变成索引-元素对,这样就可以在for循环中同时迭代索引和元素本身

for i, value in enumerate('chenwenbo'):

print i, value

# 引用两个变量

for x, y in [(1, 2), (2, 3), (3, 4)]:

print x, y

** 列表生成式 **

#!/usr/bin/env python

# -*- coding: utf-8 -*-

# 列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式。

print [x for x in range(1, 22) if x % 2 == 0]

print [x*x for x in range(1, 22) if x % 2 == 0]

print [x.lower() for x in 'ABC']

# 多个返回值的列表生成式

d = {'x': 'A', 'y': 'B'}

print [x+y for x, y in d.iteritems()]

** 生成器 **

#!/usr/bin/env python

# -*- coding: utf-8 -*-

# 列表生成式 []

L = [x*x for x in range(0, 10)]

print L

# 生成器 ()

g = (x*x for x in range(0, 10))

print g.next()

print g.next()

print g.next()

print g.next()

for x in g:

print x

# 自定义生成器

def fib(max):

n, a, b = 0, 0, 1

while n < max:

# 关键

yield b

a, b = b, a + b

n = n + 1

for f in fib(6):

print f

# generator是非常强大的工具,在Python中,可以简单地把列表生成式改成generator,也可以通过函数实现复杂逻辑的generator。

# 要理解generator的工作原理,它是在for循环的过程中不断计算出下一个元素,并在适当的条件结束for循环。对于函数改成的generator来说,遇到return语句或者执行到函数体最后一行语句,就是结束generator的指令,for循环随之结束。

** filter **

#!/usr/bin/env python

# -*- coding: utf-8 -*-

print filter(lambda x: x > 10, [1, 2, 4, 5, 6, 9, 10, 15])

# 把一个序列中的空字符串删掉,可以这么写:

print filter(lambda x: (x and x.strip()), ['A', '', 'B', None, 'C', ' '])

** 高阶函数 **

#!/usr/bin/env python

# -*- coding: utf-8 -*-

# 高阶函数

# 变量可以指向函数

f = abs

print f(-10)

# 函数名也是变量

cmp = 10

print cmp

# 报错 print abs(-10)

# 参数传入函数

def add(x, y, f):

return f(x) + f(y)

print add(1, 2, abs)

** map **

#!/usr/bin/env python

# -*- coding: utf-8 -*-

# map usage

def f(num):

return num * num

print map(f, [1, 2, 3, 4, 5])

print map(lambda x: x * x, [1, 2, 3, 4, 5])

** reduce **

#!/usr/bin/env python

# -*- coding: utf-8 -*-

# reduce usage

def char2num(str):

return {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}[str]

def str2int(s):

return reduce(lambda x, y: x + y, map(char2num, s))

print str2int('123')

** sorted **

#!/usr/bin/env python

# -*- coding: utf-8 -*-

print sorted([22, 3, 51, 1, 521, 50, 134])

def new_sort(x, y):

if x > y:

return -1

if x < y:

return 1

return 0

print sorted([22, 3, 51, 1, 521, 50, 134], new_sort)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值