推荐学习书目
› 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
love
V2EX  ›  Python

强迫症患者 python 列表写法的这三种风格你喜欢哪一种

  •  
  •   love · Jun 17, 2015 · 5912 views
    This topic created in 4166 days ago, the information mentioned may be changed or developed.

    1. 括号能就省,不能省用()

    __all__ = 'get', 'post', 'delete'
    a = 1, 2, 3, \
        4, 5, 6
    

    2. 能用()绝对不用[]

    因为大部分情况我们只是要一个列表,用tuple和list是一样的,而tuple不可更改的特性要好一点点,性能上我测过,tuple只比list微强。

    a = (1, 2, 3)
    b = ('one', )
    bulk_load((1, 2, 3))
    

    3. 不管什么情况全用[]

    a = [1, 2, 3]
    bulk_load([1, 2, 3])
    
    42 replies  •  2015-06-18 12:14:49 +08:00
    neoblackcap
    neoblackcap
    Jun 17, 2015❤️1
    1
    首先,第一种是tuple不是list,你得到的是一个iterable的对象而已。

    其二,你这个标题有明显的误导,我看了只有tuple跟list的使用而已,没看到所谓的三种list写法。要知道list跟tuple还是很大的不同,就不能变更这个特性就影响够大的了。
    love
    love
    OP
    Jun 17, 2015
    2
    @neoblackcap 我这里中文的列表就是指list或tuple,英文的表示python里的意思
    neoblackcap
    neoblackcap
    Jun 17, 2015❤️1
    3
    @love 我虽然读得书少,但是你这个列表放哪里的python社区都之会认为是list,tuple中文翻译我引用《python基础教程(第二版)》中的翻译为“元组”
    echo1937
    echo1937
    Jun 17, 2015
    4
    你写的不是列表,是元组呐,2者都是序列,但差别还是很大的。
    ca1n
    ca1n
    Jun 17, 2015
    5
    既然知道tuple的不可更改性, 那么就也应该知道这两这不能混用
    love
    love
    OP
    Jun 17, 2015
    6
    @neoblackcap 好吧这里知道什么意思就行了。我一向反对在技术文章里把程序中用到的名字类型什么的翻成中文的,因为你程序里还是要写英文的,搞成中文的没有什么意思,反而不利于学习。
    mhycy
    mhycy
    Jun 17, 2015
    7
    啥时候元组与列表可以混用了。。。这是坏习惯,得改。
    love
    love
    OP
    Jun 17, 2015
    8
    @ca1n 实际上大部分情况都是可以混用的,因为很多时候我们是只是需要一个sequence,除非你明确要一个可修改的列表。
    kingname
    kingname
    Jun 17, 2015
    9
    显而易见楼主是新手。
    zenliver
    zenliver
    Jun 17, 2015
    10
    不同的数据结构, 和写法有毛关系
    love
    love
    OP
    Jun 17, 2015
    11
    楼上的不要纠结这个问题了,我改。
    这二者的区别我懂,我是说都可以的情况下用哪个:
    大部分参数只是需要一个sequence,比如标准函数sum:
    sum((1, 2, 3))
    sum([1, 2, 3])
    neoblackcap
    neoblackcap
    Jun 17, 2015❤️1
    12
    @love 这个只是需要一个可迭代的对象而已,我传迭代器进去都可以
    Tiande
    Tiande
    Jun 17, 2015❤️1
    13
    楼主认个错就不会有人喷了。
    混了数据结构可没啥好解释的。
    love
    love
    OP
    Jun 17, 2015
    14
    @neoblackcap 我说的是代码风格,是用()还是[],就象js行尾加不加分号,在需要一个sequence的情况下喜欢用哪个,你们真的不知道我说的是什么吗
    neoblackcap
    neoblackcap
    Jun 17, 2015
    15
    @love 我理解你在说什么,但是我只是支出你的想法的根基没有依据,你说需要一个sequence的时候并不是真正需要一个sequence,那是需要一个iterable,一个可迭代的对象而已,你这根基无疑是海市蜃楼。你这样对文档的理解是不对的。
    johnsmith123
    johnsmith123
    Jun 17, 2015
    16
    LZ需要新手大礼包吗?
    lingo233
    lingo233
    Jun 17, 2015
    17
    (-。-;)我喜欢这样写
    '列表' = 'value value1 value3'.split() #(雾
    gkiwi
    gkiwi
    Jun 17, 2015
    18
    @lingo233 拖出去!
    staticor
    staticor
    Jun 17, 2015❤️1
    19
    从一个code style变成了code review, 人间的欢喜.
    20015jjw
    20015jjw
    Jun 17, 2015 via Android
    20
    @lingo233 6666
    lingo233
    lingo233
    Jun 17, 2015
    21
    @gkiwi 你找不着对象,拖出去定义了没 XD
    qaulau
    qaulau
    Jun 17, 2015
    22
    楼主加入很早呀,难道以前都在水
    holmesabc
    holmesabc
    Jun 17, 2015
    23
    话说根着喷人的,倒是一大堆.

    喷完, 麻烦也回答一下别人的问题呗...
    101
    101
    Jun 17, 2015
    24
    我用第三种
    love
    love
    OP
    Jun 17, 2015
    25
    看了下我竟然是10年加入的,楼上的喷子们你们都没我资格老吧还敢瞎喷
    hahastudio
    hahastudio
    Jun 17, 2015
    26
    http://stackoverflow.com/questions/626759/whats-the-difference-between-list-and-tuples
    如果你不明白 tuple 和 list 的区别,可以问
    如果你不明白 Data Structure 和 Code Style 的区别,也可以问

    对我个人而言,是这样用的:
    1. 手写小片段的话,随意,一般用 list,因为 [] 不用 shift
    2. 写接口的话,你就要注意了,一般一个 tuple 被当成一个单独的数据,list 里面装一组数据
    不过,更多的时候我会写 generator 就是了= =
    hahastudio
    hahastudio
    Jun 17, 2015
    27
    @love 所以你说明了为什么依靠注册时间定义智商是不明智的
    ca1n
    ca1n
    Jun 17, 2015
    28
    @love 只需要一个sequence的话 我用字典也行咯
    zhyu
    zhyu
    Jun 17, 2015
    29
    建议看看 http://coolshell.cn/articles/10804.html

    其实你想问的是,在需要一个 iterable 对象的时候,习惯用 list 还是 tuple 吧

    个人习惯是能用 generator 最好,其次是 list,tuple 由于其不可变的特性,一般当作一个单位元素用,比如坐标表示 (x, y)
    Kabie
    Kabie
    Jun 17, 2015
    30
    当然要[1,2,3,]
    love
    love
    OP
    Jun 17, 2015
    31
    @hahastudio 唉早说了我不是问list和tuple的区别,这二个的区别入门python五分钟都全知道。
    我是说
    sock = socket.create_connection(('127.0.0.1', 8080))
    还是
    sock = socket.create_connection(['127.0.0.1', 8080])


    @ca1n 字典就扯太远了吧
    hahastudio
    hahastudio
    Jun 17, 2015
    32
    @love 你这就没意思了,如果你一开始就问 socket.create_connection 大家喜欢写哪个的话,那不就结了
    我喜欢 ('127.0.0.1', 8080)
    11
    11
    Jun 17, 2015❤️2
    33
    @love

    socket.create_connection(address[, timeout[, source_address]])

    Connect to a TCP service listening on the Internet address (a 2-tuple (host, port)), and return the socket object.

    @hahastudio 所以 lz 还是没看文档
    lilydjwg
    lilydjwg
    Jun 17, 2015
    34
    一和二是风格,三是习惯但不是风格因为不等价。

    我的原则是:

    1. 能不用 \ 续行就不用。需要续行时先看看 () 能用不
    2. 能不写括号就不写
    3. 能用 tuple 就不用 list
    ffffwh
    ffffwh
    Jun 17, 2015
    35
    可以这样嘛
    cons = lambda x, y: lambda f: f(x, y)
    head = lambda l: l(lambda x, y: x)
    tail = lambda l: l(lambda x, y: y)
    v2014
    v2014
    Jun 17, 2015 via Android
    36
    @11 说的好。强迫症的世界不是谁都懂得
    swjtutipo
    swjtutipo
    Jun 17, 2015
    37
    @lingo233 干得漂亮 好评 2333333
    Delbert
    Delbert
    Jun 17, 2015 via Android
    38
    @love 列表是list,tuple不是列表。
    可惜了这么一个好的id。
    ()和[]根本不是一个东西,还强调风格。
    建议楼主看《python编程初学者指南》
    ryd994
    ryd994
    Jun 18, 2015
    39
    常量用tuple性能更好
    list当容器用
    ryd994
    ryd994
    Jun 18, 2015
    40
    用tuple我还是会写括号的
    不写括号太作,改代码容易出事
    bybyisking
    bybyisking
    Jun 18, 2015
    41
    换行别用\了,用括号...
    herojaxy
    herojaxy
    Jun 18, 2015❤️1
    42
    LZ你的标题确实有一些歧义,不过我相信大部分理解能力正常的人在看过内容后其实都明白你的意思。
    不过有些人就喜欢故意装糊涂,非要指出楼主的错误,享受教育别人的优越感。列表是指list哦,跟tuple两个概念哦,楼主还要加强学习哦。好像谁不知道似的。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1585 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 77ms · UTC 16:29 · PVG 00:29 · LAX 08:29 · JFK 11:29
    ♥ Do have faith in what you're doing.