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

2015-06-17 11:54:50 +08:00
 love

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])
4768 次点击
所在节点    Python
42 条回复
lingo233
2015-06-17 13:29:26 +08:00
@gkiwi 你找不着对象,拖出去定义了没 XD
qaulau
2015-06-17 13:38:58 +08:00
楼主加入很早呀,难道以前都在水
holmesabc
2015-06-17 13:44:02 +08:00
话说根着喷人的,倒是一大堆.

喷完, 麻烦也回答一下别人的问题呗...
101
2015-06-17 13:45:09 +08:00
我用第三种
love
2015-06-17 13:56:59 +08:00
看了下我竟然是10年加入的,楼上的喷子们你们都没我资格老吧还敢瞎喷
hahastudio
2015-06-17 14:00:27 +08:00
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
2015-06-17 14:01:38 +08:00
@love 所以你说明了为什么依靠注册时间定义智商是不明智的
ca1n
2015-06-17 14:15:16 +08:00
@love 只需要一个sequence的话 我用字典也行咯
zhyu
2015-06-17 14:31:45 +08:00
建议看看 http://coolshell.cn/articles/10804.html

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

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


@ca1n 字典就扯太远了吧
hahastudio
2015-06-17 14:49:43 +08:00
@love 你这就没意思了,如果你一开始就问 socket.create_connection 大家喜欢写哪个的话,那不就结了
我喜欢 ('127.0.0.1', 8080)
11
2015-06-17 14:56:29 +08:00
@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
2015-06-17 15:03:21 +08:00
一和二是风格,三是习惯但不是风格因为不等价。

我的原则是:

1. 能不用 \ 续行就不用。需要续行时先看看 () 能用不
2. 能不写括号就不写
3. 能用 tuple 就不用 list
ffffwh
2015-06-17 15:32:34 +08:00
可以这样嘛
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
2015-06-17 15:48:38 +08:00
@11 说的好。强迫症的世界不是谁都懂得
swjtutipo
2015-06-17 16:01:46 +08:00
@lingo233 干得漂亮 好评 2333333
Delbert
2015-06-17 16:50:27 +08:00
@love 列表是list,tuple不是列表。
可惜了这么一个好的id。
()和[]根本不是一个东西,还强调风格。
建议楼主看《python编程初学者指南》
ryd994
2015-06-18 03:26:11 +08:00
常量用tuple性能更好
list当容器用
ryd994
2015-06-18 03:27:59 +08:00
用tuple我还是会写括号的
不写括号太作,改代码容易出事

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/199214

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX