V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  gwy15  ›  全部回复第 5 页 / 共 12 页
回复总数  240
1  2  3  4  5  6  7  8  9  10 ... 12  
2020-10-31 13:25:39 +08:00
回复了 llsquaer 创建的主题 Python 这个正则怎么写啊?
\.(\w+\(.+\))
2020-10-23 17:23:51 +08:00
回复了 silencht 创建的主题 Python 关于 Python 利用 ctypes 导入 C 语言动态链接库的问题
@silencht 其实我觉得挺明显的,可能你就是看花了吧。一般双下划线就是 py built-in 的,__name__/__import__/__slots__ 这种,单下划线一般就是库级别的。

另外如果你习惯翻文档的话,ctypes.Structure 下面第一个加黑加粗的就是 _fields_ 的说明。
2020-10-23 16:17:35 +08:00
回复了 silencht 创建的主题 Python 关于 Python 利用 ctypes 导入 C 语言动态链接库的问题
写 python 不买游标卡尺的吗 XD
2020-10-23 16:16:41 +08:00
回复了 silencht 创建的主题 Python 关于 Python 利用 ctypes 导入 C 语言动态链接库的问题
_fields_,一个下划线,你打成了两个
2020-09-09 18:46:54 +08:00
回复了 gwy15 创建的主题 问与答 请教一个 nginx rewrite 指令匹配到的部分消失的问题
@ysc3839 这里是我简化过的可重现 demo,实际上 rewrite 是在一个 if 块里面,匹配到爬虫 UA 才会 rewrite 。谢谢你。
2020-09-09 18:43:09 +08:00
回复了 gwy15 创建的主题 问与答 请教一个 nginx rewrite 指令匹配到的部分消失的问题
@superrichman 谢谢回答,但是好像不是这样的 XD

在 stackoverflow 上有大佬解释了下,大概是;
rewrite 部分匹配到的组,在计算 replacement 时由于懒计算会再进行 map 部分的匹配,如果正则匹配成功 $1 就会被重置,因此 $1 会变为空串。这里可以用命名组解决:

rewrite ^/(?<myuri>.*)$ /prerendered/$locale/$myuri last;
2020-09-07 17:29:44 +08:00
回复了 flowfire 创建的主题 程序员 话说量子计算机算 n 皇后问题 的复杂度是不是 O(1)
n 皇后问题是 NP 完全问题,经典计算机最佳时间复杂度是 O(n!),Rounak Jha, 2018 [1] 提出一种基于量子计算的算法,其时间复杂度为 O(N^3),空间复杂度 O(N^2) 并在 IBM 量子实验平台上进行了模拟。

[1] A Novel Quantum N-Queens Solver Algorithm and its Simulation and Application to Satellite Communication Using IBM Quantum Experience. arXiv:1806.10221
2020-07-30 13:08:25 +08:00
回复了 Alpacino 创建的主题 问与答 Python 中 string += 'a' 这种写法效率很低吗?
py str 不可变,如果要拼接字符串,类似 java 的 sb,用 List[str] 再 join 。
2020-07-26 19:57:52 +08:00
回复了 bear2000 创建的主题 程序员 做一道算法题需要花多长时间?
刚随便 roll 了一道 middle ( 583 ),提交 RE 一次,第二次 AC ( 99.74%/100%);
从 roll 到 middle+开 IDE 、拉题回来推公式+调试+提交一共耗时 6:40 ;
这个时间应该是我一看就有思路( DP )+ 模板很熟情况下的比较好的时间了。

https://github.com/gwy15/leetcode/commit/85a2e11654abc8262d2751badf4b767908eca217
@Shazoo
你仔细再想想?

这个 reduce 如果写成(其他语言的)
it = zip()
reduce((a, b) => {a.extend(b); return a;}, it, [])
那确实是 O(n) 的。

但是这个写的是 reduce(operator.add, it),那执行的就是 a = a + b,a 和 b 都是 tuple,这不是 N^2 是什么?
@mind3x 随口一说?
这个 reduce 展开就是
it = zip()
v: Tuple = next(it)
for pair in it:
....v = v + pair
return v

您来分析下这个是您说的 O(N) 吗?您觉得 python 还会把 v = v+pair 优化成 v.extend(pair) 吗?
@Shazoo
list slice -> O(N)
zip -> O(N)
reduce -> N * O(tuple.add)
tuple.add -> N
正常的写法:空间(额外) O(1),时间 O(n)
你的“一行”写法:空间(额外) O(n),时间 O(n^2),伴随大量 GC

我写了个 benchmark,你的“一行解法”仅仅 n=100k 的规模,就要 30s 一次,对比正常写法 24ms,慢了一千倍以上。

https://imgchr.com/i/UzxYLQ

https://gist.github.com/gwy15/22616306f560f65d77b6ca23954e91a3

你当然可以说“题目就是 n~500,这么写也能过”。能过是一回事,明明有性能更好也更好理解的代码不用,非要这么写,那以后系统瓶颈的时候你是打算拿着 cProfile 慢慢找瓶颈吗?

至于拿 leetcode 的排行说性能,leetcode 的运行时间打底就是 40ms,能说明啥?你加个 time.sleep(0.03) 都可能是 40ms 。

拿高阶函数写又不是什么很有优越感的事情,楼主上来就“杠精”、“不懂 python3”、“不了解高阶函数”、“不要出来秀智商”,这个行为让人觉得很莫名其妙。
@doraemon1293 super 是根据 MRO 链走的,不是“父类”。
上面有点笔误
Third -> First -> Second -/-> Base
>>> second
>>> first
>>> third
调用 super() 的时候实际上会跟随 MRO 进行链式调用,在这个例子里面,调用链是(从左到右宽度优先搜索)
`Third` -> `First` -> `Second` -> `Base` -> `object`
可以用 `Third.mro()` 查看。

因此,在调用的时候,Third.__init__ 里面 super().__init__() 实际调用的是 Second.__init__(self),而 Second.__init__ 里面没有继续调用 super,所以 Base 的 __init__ 没有调用。
2020-07-09 16:53:52 +08:00
回复了 L4Liiyooooo 创建的主题 Python 大佬们求问一下 我有一个需求 Python 能实现吗?
没看懂你定义的“随意随机”是什么意思,我描述下我的理解。

矩阵 A_ij 是 5x5 的矩阵,选出其中若干行,将行向量相加,得到 a,要求 a_0 > 1, a_1 > 2, etc.

如果是每行 01 选择的话直接位运算就行,2^5 复杂度;
如果是每行都可以若干次选择(线性组合),那就解五元线性不等式就行了,找本优化方面的书看。
2020-07-08 15:05:34 +08:00
回复了 TimeLover 创建的主题 奇思妙想 创业想法:回收大学校园里无人认领的自行车,可行吗?
两个月就回收,如果出去访学就一学期了至少四个月……
1  2  3  4  5  6  7  8  9  10 ... 12  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2616 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 25ms · UTC 10:53 · PVG 18:53 · LAX 02:53 · JFK 05:53
Developed with CodeLauncher
♥ Do have faith in what you're doing.