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
a499492580
V2EX  ›  Python

Python 数据类型

  •  
  •   a499492580 · 2017-11-29 09:34:39 +08:00 · 2112 次点击
    这是一个创建于 2311 天前的主题,其中的信息可能已经有所发展或是发生改变。

    (最近接触了米筐、同花顺 MindGo 等量化投资平台,打算学习一下 python 相关的知识,MindGo 量化平台上也正在产出一些 python 教材,个人觉得还不错,给大家分享一下,有兴趣的同学可以学习一波~) 1.字符串(str)

    字符串是 Python 中最常用的数据类型,使用引号来创建字符串,注:单引号或者双引号都行!

    [示例] 创建字符串

    first='hello world !' #简单的字符串 print(first) second='key 5628' #简单的字符串 print(second) third="5q9rt" #简单的字符串 print(third) hello world ! key 5628 5q9rt

    [示例] str()转化成字符串,print 输出

    a=123;b=321 first=str(a+b) print('a 加 b 等于'+first) a 加 b 等于 444 如果不用 str()转化,则会报错,原因为:'a 加 b 等于'是字符串,first 是值,两者不统一。需要转化成字符串,统一格式才能用 print 输出。 a=123;b=321 first=a+b print('a 加 b 等于'+first)

    TypeError Traceback (most recent call last) <ipython-input-2-0cf5c4cc69a3> in <module>() 1 a=123;b=321 2 first=a+b ----> 3 print('a 加 b 等于'+first) TypeError: Can't convert 'int' object to str implicitly

    1.1.访问字符串中的值

    字符串内的值可以通过方括号访问。Python 语言中,所有序列都是从 0 开始标注,0 代表第一个值。如果从末尾开始数,-1 代表末尾开始第一个,-2 以此类推。

    方括号内有多种访问方法,[:]代表全访问,[x]代表访问特定的位置的值,[x:]代表从 x 号位到末尾,[:y]从首位到 y 位置,但不包括 y 位置,[x:y]代表访问 x 到 y 位置的值,其中包括 x 位置,但不包括 y 位置。

    字符串内空键也占一个位置。

    字符串和数字一样都是不可变数据类型,不能进行修改操作。要想修改或是删除原有字符串数据,最好的方法是重新创建一个字符串。

    [示例] 访问字符串中每一个值

    first='python' #python 对应 012345 号位 x=first[0] print(x) y=first[5] print(y) z=first[:] print(z) a=first[-1] #-1 代表是末尾开始数第一个,-2,-3,-4....以此类推。 print(a) b=first[2:4] #包括 2,不包括 4。 print(b) second='hello world !' a=second[4:7] #注意输出结果为:'o w' 因为字符串内空键也占一个位置。 print(a) p n python n th o w

    1.2.字符串运算符

    字符串运算符表 x='pyt',y='hon' 运算符 介绍 示例

    • 字符串连接 x+y 返回'Python'
    • 重复输出字符串 (x+y)*2 返回'pythonpython' [] 通过索引获取字符串中字符 x[1]返回'y' [ : ] 截取字符串中的一部分 x[:]返回'pyt' in 成员运算符-如果字符串中包含给定的字符返回 True 'h' in a 返回 False not in 成员运算符 -如果字符串中不包含给定的字符返回 True 'm' not in a 返回 True % 字符串格式化 请看下一章节

    [示例] 字符串运算符案例

    x='000300.SH 是' y='沪深 300 指数' print(x+y) print(y*4) print(x[-1]) print(x[2:5]) print('沪深' in x) print('300' not in y) 000300.SH 是沪深 300 指数 沪深 300 指数沪深 300 指数沪深 300 指数沪深 300 指数 是 030 False False

    1.3.字符串格式化

    Python 支持格式化字符串的输出,最基本的用法是将值插入到字符串中。    在简单的双均线策略中就运用了字符串格式化:log.info("买入%s" % (account.security))

    [示例] 字符串格式化案例

    x='小明今年%s 岁'%20 print(x) y='小明今年%s 岁,而小刚今年%s 岁'%(20,21) print(y) z='小明今年%s 岁,小刚今年%s 岁,而小刘今年%s 岁'%(20,21,25) print(z) 小明今年 20 岁 小明今年 20 岁,而小刚今年 21 岁 小明今年 20 岁,小刚今年 21 岁,而小刘今年 25 岁

    [案例解读]    1.所谓的字符串格式化,其实就是在字符串中插入字符串格式符'%s',随后再字符串外使用 '%+值'即可完成插入。    2.字符串格式化的一般格式即可:'字符串+%s' + % + 一系列值 。    3.同一个字符串中可以同时插入多个值,案例中第三条使用了三个字符串格式符,随后分别插入三个值,一一对应。

    6 条回复    2017-12-01 12:14:05 +08:00
    Marmot
        1
    Marmot  
       2017-11-29 10:52:21 +08:00   ❤️ 1
    %格式化有些弊端。
    比如 ‘ this is %s ’ % (1,2,3) 会出问题, 只能‘ this is %s ’ % ((1,2,3),),但是用 format 可以直接避免,f'...'(3.6+)也可以
    我个人在 Python 习惯 format
    a499492580
        2
    a499492580  
    OP
       2017-11-29 15:08:41 +08:00
    谢谢指点~
    qq976739120
        3
    qq976739120  
       2017-11-29 19:35:28 +08:00
    建议看一下 format,%都过期了
    xpresslink
        4
    xpresslink  
       2017-11-30 22:24:24 +08:00
    @Marmot 我觉得这个还不算什么,'this is %s' % str((1,2,3)) 多包一下也就是了。有两个经常用需求只能用 str.format 方便。
    一个是多次引用,
    >>> '{0}-{1}-{0}'.format(0, 1)
    '0-1-0'
    另一个是嵌套引用
    >>> '{value:0>{width}}'.format(value='1', width=10)
    '0000000001'
    Marmot
        5
    Marmot  
       2017-12-01 09:41:25 +08:00
    @xpresslink 知道啊,还有 d={"name": **, "id":12, "age": 24}
    可以格式化 ‘{id},{name},{age}’.format(**d),
    list 也可以传‘{},{},{}’.format(*l)
    大兄弟,我的重点是尽量用 format,那个只是举个例子而已,不要这么较真嘛。
    楼主一看就是好学的人,给个关键词自己探索一波不是最美滋滋的事情么。反正我是这样。
    3.6 以后的 f"..."字符串也不错的。
    jxie0755
        6
    jxie0755  
       2017-12-01 12:14:05 +08:00
    "?a=123;b=321 first=str(a+b) print('a 加 b 等于'+first) a 加 b 等于 444 如果不用 str()转化,则会报错,原因为:'a 加 b 等于'是字符串,first 是值,两者不统一。需要转化成字符串,统一格式才能用 print 输出。a=123;b=321 first=a+b print('a 加 b 等于'+first)"

    一般来说,如果全是 str,我就用加号"+"连接各项.
    不然的话,可以用逗号","啊
    print('a 加 b 等于', first) 不就行了么
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   949 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 21:49 · PVG 05:49 · LAX 14:49 · JFK 17:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.