美文网首页
python基础2

python基础2

作者: 只喝白开水a | 来源:发表于2018-09-12 09:06 被阅读0次

一·a=1,b=2,不用中间变量交换 a 和 b 的值

>>> a=1
>>> b=2
>>> a,b=b,a
>>> print a,b
2 1

二.

1 >>>dict()                        # 创建空字典
2 {}
3 >>> dict(a='a', b='b', t='t')     # 传入关键字
4 {'a': 'a', 'b': 'b', 't': 't'}
5 >>> dict(zip(['one', 'two', 'three'], [1, 2, 3]))   # 映射函数方式来构造字典
6 {'three': 3, 'two': 2, 'one': 1} 
7 >>> dict([('one', 1), ('two', 2), ('three', 3)])    # 可迭代对象方式来构造字典
8 {'three': 3, 'two': 2, 'one': 1}
9 >>>

三.

l = []
for i in xrange(10):
l.append({‘num’:i})
print l

l = []
a = {‘num’:0}
for i in xrange(10):
a[‘num’] = i
l.append(a)
print l

上方代码的结果:

[{‘num’:0},{‘num’:1},{‘num’:2},{‘num’:3},{‘num’:4},{‘num’:5},{‘num’:6},{‘num’:7},{‘num’:8},
{‘num’:9}]

下方代码结果:(相当于浅拷贝)

1. [{‘num’:9},{‘num’:9},{‘num’:9},{‘num’:9},{‘num’:9},{‘num’:9},{‘num’:9},{‘num’:9},{‘num’:9},
{‘num’:9}]

四.4G 内存怎么读取一个 5G 的数据
方法一:
可以通过生成器,分多次读取,每次读取数量相对少的数据(比如 500MB)进行处理,处理结束后在读取后面的 500MB 的数据。
方法二:
可以通过 linux 命令 split 切割成小文件,然后再对数据进行处理,此方法效率比较高。可以按照行数切割,可以按照文件大小切割
五.

def print_directory_contents(sPath):
"""
这个函数接收文件夹的名称作为输入参数
返回该文件夹中文件的路径
以及其包含文件夹中文件的路径
"""
# 补充代码
------------代码如下--------------------
import os
for sChild in os.listdir(sPath):
    sChildPath = os.path.join(sPath, sChild)
    if os.path.isdir(sChildPath):
        print_directory_contents(sChildPath)
    else:
        print(sChildPath)

六.常用的 Python 标准库都有哪些?
os 操作系统,time 时间,random 随机,pymysql 连接数据库,threading 线程,multiprocessing进程,queue 队列。
第三方库:
django 和 flask 也是第三方库,requests,virtualenv,selenium,scrapy,xadmin(后台管理),celery(定时任务),re,hashlib,md5。
常用的科学计算库(如 Numpy,Scipy,Pandas)。
七. Python 里面如何生成随机数
random.random():生成一个 0-1 之间的随机浮点数;
random.uniform(a, b):生成[a,b]之间的浮点数;
random.randint(a, b):生成[a,b]之间的整数;
random.randrange(a, b, step):在指定的集合[a,b)中,以 step 为基数随机取一个数;
random.choice(sequence):从特定序列中随机取一个元素,这里的序列可以是字符串,列表,元组等。
random.shuffle(alist):打乱排好序的列表
八.输入某年某月某日,判断这一天是这一年的第几天?

import datetime
def dayofyear():
    year = input("请输入年份:")
    month = input("请输入月份:")
    day = input("请输入天:")
    date1=datetime.date(year=int(year),month=int(month),day=int(day))
    date2 = datetime.date(year=int(year),month=1,day=1)
    return (date1 - date2 + 1).days

九.map(),reduce(),zip(),filter(),lambda,

map():
>>> list(map(str, [1, 2, 3, 4, 5, 6, 7, 8, 9]))
['1', '2', '3', '4', '5', '6', '7', '8', '9']
reduce():
传入一个list L ,返回所有元素乘积
>>> def prod(L):
...     return reduce(lambda x,y:x*y,L)

zip():

>>>a = [1,2,3]
>>> b = [4,5,6]
>>> c = [4,5,6,7,8]
>>> zipped = zip(a,b)     # 打包为元组的列表
[(1, 4), (2, 5), (3, 6)]
>>> zip(a,c)              # 元素个数与最短的列表一致
[(1, 4), (2, 5), (3, 6)]
>>> zip(*zipped)          # 与 zip 相反,*zipped 可理解为解压,返回二维矩阵式
[(1, 2, 3), (4, 5, 6)]

filter():
和map()类似,filter()也接收一个函数和一个序列。和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素

name.lower().capitalize():首字母大写其余小写

十.函数作为返回值、闭包、装饰器
python2.7闭包问题
返回闭包时牢记一点:返回函数不要引用任何循环变量,或者后续会发生变化的变量。
计数器

def createCounter():
    a = [0]
    def counter():
        a[0] += 1
        return a[0]
    return counter
c = createCounter()

装饰器,三层装饰器:

def metric(text):
   def log(fn):
       @functools.wraps(fn)
       def wrapper(*args, **kw):
           start =time.time()
           s = fn(*args, **kw)
           print text
           end =time.time()
           print end -start
           return s
       return wrapper
   return log

十一.程序性能评估

import random
import cProfile
lIn = [random.random() for i in range(100000)]
cProfile.run('f1(lIn)')
cProfile.run('f2(lIn)')
cProfile.run('f3(lIn)')

相关文章

网友评论

      本文标题:python基础2

      本文链接:https://www.haomeiwen.com/subject/jvvygftx.html