这种写法是什么奇技淫巧?

2019-04-10 05:47:39 +08:00
 loliordie
list1 = [(v[0],v[1])
for v in box]
居然还能工作...
6489 次点击
所在节点    Python
25 条回复
Dvel
2019-04-10 05:54:49 +08:00
这不就是列表生成式吗,一般不换行吧
loliordie
2019-04-10 05:57:45 +08:00
@Dvel 卧槽眼花了,一换行就不认识了。。。想了半天为什么调用前就工作了。。。
lilpig
2019-04-10 06:28:20 +08:00
我很好奇为啥要换行写。。我也是缓了一下才看出来😂
momuou
2019-04-10 09:10:01 +08:00
三思而后行。。别发出来闹出笑话。。
imycc
2019-04-10 09:12:23 +08:00
讲真的我还真看到有人这么写,因为 tuple 那部分太长了。
不过像你这种情况我更喜欢写 map
www5070504
2019-04-10 09:13:47 +08:00
解析每行的那种格式化数据 比如 xx=yy 之类的 这样的写法好像挺常见的
wuxi889
2019-04-10 09:17:45 +08:00
@momuou 题主小伙子应该是没见过这种格式的
shawndev
2019-04-10 09:56:25 +08:00
列表生成式,将前两项转为 tuple
kiddult
2019-04-10 10:14:23 +08:00
@wuxi889 应该是被换行整懵了。。。。我第一眼也是
oblivious
2019-04-10 10:19:31 +08:00
box = [[1, 2, 3, 4, 5],
[2, 3, 4, 5, 6]]

list1 = [(v[0],v[1]) for v in box]

=> list1 = [(1, 2), (2, 3)]
lithiumii
2019-04-10 10:23:55 +08:00
[] 里面放简单的 for 循环生成新的 list 是标准的 list comprehension 操作
利用括号(大中小括号都行)内直接换行有 implicit line joining,也是换行的标准操作

不过换行一般是为了可读性考虑,也许作者觉得这样换行更清晰吧
Orenoid
2019-04-10 10:30:33 +08:00
还可以这么写
[(foo, bar) for foo, bar, *_ in list1]
xuwangyuan520
2019-04-10 11:29:40 +08:00
我是初学者,我感觉挺正常的,方便以后挖沟!
CallMeReznov
2019-04-10 11:34:07 +08:00
今天早上看 NVM 安装后要执行的 export 命令
发现他赋值后换行一个[]起来的,我怎么都不明白这个[]是什么意思,难道是上一行的?但是为什么没有\?
后来一查原来是 if then 简写...真是无时无刻不感觉自己菜..
kidlj
2019-04-10 11:44:56 +08:00
"There should be one-- and preferably only one --obvious way to do it."
BBCCBB
2019-04-10 11:48:12 +08:00
第一眼我也看懵
tiedan
2019-04-10 11:53:37 +08:00
换行为了可读性
retanoj
2019-04-10 12:34:42 +08:00
行了,这下问题变成“为啥换行还能工作”了
phizumi
2019-04-10 13:07:20 +08:00
@Orenoid 这种写法可读性更好,👍🏻
wedoub
2019-04-10 13:20:32 +08:00
Pythonic 的写法,看来你还不够 Pythonic

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

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

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

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

© 2021 V2EX