量化分析师的 Python 日记 [第 1 天:谁来给我讲讲 Python?] - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
datayes2015
V2EX    Python

量化分析师的 Python 日记 [第 1 天:谁来给我讲讲 Python?]

  •  1
     
  •   datayes2015 2016-09-05 17:18:01 +08:00 3487 次点击
    这是一个创建于 3394 天前的主题,其中的信息可能已经有所发展或是发生改变。
    ###“谁来给我讲讲 Python ?”
    作为无基础的初学者,只想先大概了解一下 Python ,随便编个小程序,并能看懂一般的程序,那些什么 JAVA 啊、 C 啊、继承啊、异常啊通通不懂怎么办,于是我找了很多资料,写成下面这篇日记,希望以完全初学者的角度入手来认识 Python 这个在量化领域日益重要的语言
    ###一,熟悉基本
    在正式介绍 python 之前,了解下面两个基本操作对后面的学习是有好处的:
    1 )基本的输入输出 可以在 Python 中使用+、-、*、/直接进行四则运算。
    ( 2 )导入模块 使用 import 可以导入模块,导入之后,就可以使用这个模块下面的函数了。 比如导入 math 模块,然后使用 math 模块下面的 sqrt 函数:
    import math
    math.sqrt(9)
    这时我有疑问了:
    “每次引用函数的时候, math 这个模块前缀都要带吗?可不可以不带?”
    直接输入 sqrt(9)是会报错的,好烦人,那么有什么办法可以不用每次都带前缀?办法是有的,用“ from 模块 import 函数”的格式先把函数给“拿”出来。

    1 from math import sqrt
    2 sqrt(9)
    这样每次使用 sqrt 函数的时候就不用再加 math 前缀了。当我正准备跳过的时候,又有了一个问题?
    “ math 模块下面有那么多函数,可不可以写一个语句,然后 math 下面所有函数都可以直接使用?”
    调用了 math 下面的 sqrt 函数,写一个 from … import …,再调用下面的 floor ,还要写一个,如此也挺麻烦的,有个办法可以一下把所有函数都给“拿”出来:
    from math import *
    print sqrt(9)
    print floor(32.9)
    3.0
    32.0
    ###二,容器 1 ,什么是容器
    开始学 Python 时,被它的数据结构,什么字典、序列、元组等等搞的很混乱,估计有跟我一样的初学者,所以我梳理了一下留存: 首先要从容器说起, Python 中有一种名为容器的数据结构,顾名思义,容器,就是装数据的器具,它主要包括序列和词典,其中序列又主要包括列表、元组、字符串等(见下面那张图)。

    https://uqer.io/community/share/55e913a5f9f06c1ea681f9e8

    列表的基本形式比如:[1,3,6,10]或者[‘ yes ’,’ no ’,’ OK ’]
    元组的基本形式比如:(1,3,6,10)或者(‘ yes ’,’ no ’,’ OK ’)
    字符串的基本形式比如:’ hello ’
    以上几种属于序列,序列中的每一个元素都被分配一个序号即元素的位置,也称为“索引”,第一个索引,即第一个元素的位置是 0 ,第二个是 1 ,依次类推。列表和元组的区别主要在于,列表可以修改,而元组不能(注意列表用中括号而元组用括号)。序列的这个特点,使得我们可以利用索引来访问序列中的某个或某几个元素,比如:
    a=[1,3,6,10]
    a[2]
    b=(1,3,6,10)
    b[2]
    c='hello'
    c[0:3]
    'hel'
    而与序列对应的“字典”则不一样,它是一个无序的容器,
    它的基本形式比如: d={7:'seven',8:'eight',9:'nine'}
    这是一个“键值”映射的结构,因此字典不能通过索引来访问其中的元素,而要根据键来访问其中的元素:
    d={7:'seven',8:'eight',9:'nine'}
    d[8]
    'eight'
    2 、序列的一些通用操作
    除了上面说到的索引,列表、元组、字符串等这些序列还有一些共同的操作。
    ( 1 )索引(补充上面)
    序列的最后一个元素的索引,也可以是-1 ,倒数第二个也可以用-2 ,依次类推:
    a=[1,3,6,10]
    print a[3]
    print a[-1]
    10
    10
    ( 2 )分片
    使用分片操作来访问一定范围内的元素,它的格式为:
    a[开始索引:结束索引:步长]
    那么访问的是,从开始索引号的那个元素,到结束索引号-1 的那个元素,每间隔步长个元素访问一次,步长可以忽略,默认步长为 1 。
    c='hello'
    c[0:3]
    'hel'
    ( 3 )序列相加
    即两种序列合并在一起,两种相同类型的序列才能相加
    [1, 2, 3, 4, 5, 6]
    invalid syntax (line 2)
    ( 4 )成员资格
    为了检查一个值是否在序列中,可以用 in 运算符
    a='hello'
    print 'o' in a
    print 't' in a
    3 、列表操作
    以上是序列共有的一些操作,列表也有一些自己独有的操作,这是其他序列所没有的
    ( 1 ) List 函数
    可以通过 list(序列)函数把一个序列转换成一个列表
    list('hello')
    查看全部
    ['h', 'e', 'l', 'l', 'o']
    ( 2 )元素赋值、删除
    元素删除 del a[索引号]
    元素赋值 a[索引号]=值
    查看全部
    'hello'

    1
    b=list(a)
    2
    b
    查看全部
    ['h', 'e', 'l', 'l', 'o']

    1
    del b[2]
    2
    b
    查看全部
    ['h', 'e', 'l', 'o']

    1
    b[2]='t'
    2
    b
    查看全部
    ['h', 'e', 't', 'o']
    分片赋值 a[开始索引号:结束索引号]=list(值)
    为列表的某一范围内的元素赋值,即在开始索引号到结束索引号-1 的区间几个元素赋值,比如,利用上面语句,如何把 hello 变成 heyyo ?
    b=list('hello')
    2
    b
    查看全部
    ['h', 'e', 'l', 'l', 'o']

    1
    b[2:4]=list('yy')
    2
    b
    查看全部
    ['h', 'e', 'y', 'y', 'o']
    注意虽然“ ll ”处于“ hello ”这个单词的第 2 、 3 号索引的位置,但赋值时是用 b[2:4]而不是 b[2:3],另外注意 list()用小括号。
    ( 3 )列表方法
    上面说过 list 函数,函数这个东西在很多语言中都有,比如 excel 里面的 if 函数、 vlookup 函数, SQL 里面的 count 函数,以及各种语言中都有的 sqrt 函数等等, python 中也有很多函数。 Python 中的方法,是一个“与某些对象有紧密联系的”函数,所以列表方法,就是属于列表的函数,它可以对列表实现一些比较深入的操作,方法这样调用:
    对象.方法(参数)
    那么列表方法的调用就理所当然是:
    列表.方法(参数)
    常用的列表方法这么几个,以 a=['h','e','l','l','o']为例:
    a=['h','e','l','l','o']
    2
    a
    查看全部
    ['h', 'e', 'l', 'l', 'o']
    给列表 a 的 n 索引位置插入一个元素 m: a.insert(n,m)
    a.insert(2,'t')
    2
    a
    查看全部
    ['h', 'e', 't', 'l', 'l', 'o']
    给列表的最后添加元素 m: a.append(m)

    1
    a.append('q')
    2
    a
    查看全部
    ['h', 'e', 't', 'l', 'l', 'o', 'q']
    返回 a 列表中,元素 m 第一次出现的索引位置: a.index(m)

    1
    a.index('e')
    查看全部
    1
    删除 a 中的第一个 m 元素: a.remove(m)

    1
    a.remove('e')
    2
    a
    查看全部
    ['h', 't', 'l', 'l', 'o', 'q']
    将列表 a 从大到小排列: a.sort()

    1
    a.sort()
    2
    a
    查看全部
    ['h', 'l', 'l', 'o', 'q', 't']
    4 、字典操作
    ( 1 ) dict 函数
    dict 函数可以通过关键字参数来创建字典,格式为:
    dict(参数 1=值 1,参数 2=值 2, …)={参数 1:值 1, 参数 2=值 2, …}
    比如,如何创建一个名字 name 为 iayounet ,年龄 age 为 28 的字典?
    dict(name='jiayounet',age=27)
    查看全部
    {'age': 27, 'name': 'jiayounet'
    基本操作
    字典的基本行为与列表在很多地方都相似,下面的例子以序列 a=[1,3,6,10],字典 f={'age': 27, 'name': 'shushuo'}为例
    my picture
    日记小结: 今天学习了 Python 的基本页面、操作,以及几种主要的容器类型,天还要学习 Python 的函数、循环和条件、类,然后才算是对 Python 有一个大致的了解。
    10 条回复    2016-09-06 16:48:00 +08:00
    server
        1
    server  
       2016-09-05 17:22:45 +08:00
    好 软文
    ethanlu
        2
    ethanlu  
       2016-09-05 17:34:53 +08:00
    列表是不是就是数组?
    lneoi
        3
    lneoi  
       2016-09-05 17:43:36 +08:00
    没格式 难阅读
    songshan
        4
    songshan  
       2016-09-05 17:50:39 +08:00
    咦?顶一个,顺便招聘量化研究员啦~通联数据, base 上海,简历投递 [email protected]
    zmj1316
        5
    zmj1316  
       2016-09-05 19:32:51 +08:00
    t/182389

    看看这贴,多久前就有人转过了, lz 把人家祖坟都给挖了还不注明出处啊, LS 也是一伙的,拜托搞软文的取名字也用点心啊!
    xiahei
        6
    xiahei  
       2016-09-05 19:46:39 +08:00
    排版感人。
    Tink
        7
    Tink  
    PRO
       2016-09-05 20:36:50 +08:00
    ...
    taxidriver
        8
    taxidriver  
       2016-09-05 21:13:09 +08:00
    现在到处都是这个矿那个矿的贴,又是量化又是 python ,你们烦不烦人
    taxidriver
        9
    taxidriver  
       2016-09-05 21:14:24 +08:00
    而且你来程序员网站发这种基础的 python 教学贴?拜托走点心好吧,你去炒股论坛发编程教学贴可以,来程序员论坛至少是发金融入门的贴才对路
    datayes2015
        10
    datayes2015  
    OP
       2016-09-06 16:48:00 +08:00
    @taxidriver 恩恩,金融入门往后会发的
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2480 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 39ms UTC 10:55 PVG 18:55 LAX 02:55 JFK 05:55
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86