V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  O5oz6z3  ›  全部回复第 5 页 / 共 5 页
回复总数  100
1  2  3  4  5  
2021-07-25 19:42:30 +08:00
回复了 O5oz6z3 创建的主题 Python 如何评价生成器比推导式快?
@renmu123 同意,只是突然想到可以将速度也作为生成器和推导式的其中一种区别,所以抛出这么一个问题。


@billlee @WilliamYang 确实,不知道有多少人经常拿动态语言和静态语言比……
2021-07-25 08:43:30 +08:00
回复了 O5oz6z3 创建的主题 Python 如何评价生成器比推导式快?
@Richard14 好吧,看来是我问得不够具体。虽然我也觉得显而易见,但是纸上谈兵不够肯定。比如说考虑到运行开销,连串嵌套的生成器应该慢一些;考虑到内存分配速度,也许是推导式慢一些。
虽然可能归根到底,这两者的速度差距其实无关紧要。
2021-07-25 06:29:55 +08:00
回复了 O5oz6z3 创建的主题 Python 如何评价生成器比推导式快?
@littleMaple 确实还有这个因素,也就是说运行开销生成器更重一些,推导式更轻一些。至于底层实现我就不太清楚了……
2021-07-24 01:25:11 +08:00
回复了 wuwukai007 创建的主题 Python Python 碰到一题,大家有没有更好的解法
@O5oz6z3 #12 订正一下,重看了题目后发现 #12 楼的做法是错的。
正如 #3 楼所说,虽然不知道是什么题目描述居然很模糊,还没有标准答案,不过大意我猜是像 #13 楼所说在每行列表内搜索所有可能的缩写组合,也就是如 #11 楼所说不能跨行匹配。最后统计所有缩写组合的出现次数。正确的思路应该是如 #5 楼那样使用组合排列之类的。
2021-07-23 10:33:32 +08:00
回复了 shangwuli 创建的主题 程序员 程序员们会担心被低代码、无代码开发取代吗?
也许会,技术也许会革新,门槛也许会降低,市场也许没变大,行业也许会内卷,码农也许会失业,快进也许会一步到位。
2021-07-23 09:40:15 +08:00
回复了 wuwukai007 创建的主题 Python Python 碰到一题,大家有没有更好的解法
@wuwukai007 好吧,那最后一个问题,题目是要求 key1 只能匹配一种 key2 ?还是说 key1 可以匹配多种 key2 ?比如 “中国工商银行” 可以分类到 “工银”、“中行” 或者 “工行” 等等。
2021-07-23 08:20:48 +08:00
回复了 wuwukai007 创建的主题 Python Python 碰到一题,大家有没有更好的解法
@wuwukai007 啊这,所以答对了?
2021-07-23 07:26:19 +08:00
回复了 SIGEV13 创建的主题 美酒与美食 求消耗大量西红柿的菜谱
番茄比萨、意大利番茄沙拉、西红柿煎饺、茄汁千层饼、西红柿派、番茄罗宋汤、番茄蓉番茄粉、焗蕃茄烤蕃茄煎釀番茄渍番茄腌番茄烩番茄——我编不下去了
2021-07-23 02:15:53 +08:00
回复了 wuwukai007 创建的主题 Python Python 碰到一题,大家有没有更好的解法
不知道对不对,花里胡哨做法两则如下:
exec('''
from itertools import chain
from collections import Counter
from pprint import pprint as pp

# from functools import lru_cache
# _set = lru_cache(None)(set)
# issupset = lambda x,y: _set(x).issuperset(_set(y)) and x!=y

# nput_data = ……
issupset = lambda x,y: set(x).issuperset(set(y)) and x!=y
all = list(chain.from_iterable(nput_data))
any = set(all)

print('如果不重复匹配')
hits = []
for x in all:
\t for y in any:
\t\t if issupset(x, y):
\t\t\t hits.append((y, x))
\t\t\t break
pp(Counter(hits))

print('如果重复匹配')
from itertools import product
res = filter(lambda a:issupset(*a), product(all, any))
ctr = Counter((y,x) for x,y in res)
pp(ctr)
''')
<del>(答对有奖吗)</del>
2021-07-22 18:19:59 +08:00
回复了 Kasumi20 创建的主题 Windows cmd 无法显示带颜色字体
Rust 不懂,不知道有没有人提过 Python 的一个简单 workaround 是 os.system('')。
原理参照:bugs.python.org/msg291732
2021-07-20 23:49:48 +08:00
回复了 evilStart 创建的主题 Python Nodejs 之后, Python 在 Web 开发领域还有啥优势么?
@ysc3839 这我就不懂了,我还以为 async function 只能 await 不能用来回调。
2021-07-20 14:30:29 +08:00
回复了 evilStart 创建的主题 Python Nodejs 之后, Python 在 Web 开发领域还有啥优势么?
@ysc3839 不懂 C++,所以不知道你要实现的功能是什么。
如果是说让协程能随意 suspend resume,那么听起来像生成器。
但是据我所知,py 协程应该不支持随意 suspend resume 。
可能我理解有误,或者 py 水平不够。
2021-07-20 10:34:57 +08:00
回复了 evilStart 创建的主题 Python Nodejs 之后, Python 在 Web 开发领域还有啥优势么?
@ysc3839 #61 Python 的异步没有 Javascript 直观,也许是因为 js 本身就依靠事件循环,而 py 本来就没有事件循环,所以 py 必需依靠 asyncio 的 event loop 。而且 js 有完整的函数表达式,但 py 要么写嵌套函数,要么只有限制很多的 lambda 函数表达式,写回调或者 Promise 都不够方便。
2021-07-19 11:46:18 +08:00
回复了 evilStart 创建的主题 Python Nodejs 之后, Python 在 Web 开发领域还有啥优势么?
@ChevalierLxc 是我想当然了,我还以为前后端一把梭会是优势。
2021-07-18 23:34:58 +08:00
回复了 evilStart 创建的主题 Python Nodejs 之后, Python 在 Web 开发领域还有啥优势么?
py 拿头打得赢 js,浏览器能直接运行 py 再说。
2021-06-23 20:32:56 +08:00
回复了 piqizhu8 创建的主题 问与答 有没有觉得, Python 这个语言,越来越复杂(繁杂)了
有点同感,新语法学不过来了。
不过很好奇楼主所说的“dict 本身的方法就可以容易、直观的实现”是什么?能不能给一下完整的新旧写法对比一下优劣?
想知道楼主还觉得什么语法糖很混乱
2021-05-27 19:00:17 +08:00
回复了 imn1 创建的主题 Python 已知目录树全文件、目录路径列表,不使用 IO 求空目录
@imn1
1. 这份代码里面没有 IO 操作,使用 pathlib 只是为了方便字符串层面的路径操作。
2. pathlib 构建对象确实有性能问题,但这只是其中一种实现,lambda 代码可以用你写的 os...来代替。

顺便因为缩进问题,修改一下无序部分的代码:
```python
print('如果无序')
result = { k for k in paths if is_dir(k) }
temp = [ result.discard(get_parent(v)) for v in paths ]
# pp(result)
```
因为没法测试,所以不知道到底行不行得通。
2021-05-27 18:20:41 +08:00
回复了 imn1 创建的主题 Python 已知目录树全文件、目录路径列表,不使用 IO 求空目录
没给出样例,问题描述也很含糊,目录树是按字符顺序还是路径关系排序、子目录是否以分隔符结尾、目录中只含有空目录是否也算作空目录……
但还是试着写了写,不知道行不行:
```python
from pathlib import Path
from itertools import zip_longest
# from pprint import pprint as pp

is_dir = lambda n: not Path(n).suffix
get_parent = lambda n: str(Path(n).parent)

# paths = ?
print('如果按路径关系排序')
result = [ k for k, v in zip_longest(paths, paths[1:], fillvalue='')
if is_dir(k) and not v.startswith(k) ]
# pp(result)

print('如果无序')
result = { k for k in paths if is_dir(k) }
for v in paths:
k = get_parent(v)
result.discard(k)
# pp(result)
```
(如果需要优化可以修改为迭代器,需要简化可以手动复制函数填充进表达式)
python3 另外四种写法……
单引号+文件检测
```python
from pathlib import Path
print(str([x.stem for x in Path('.').glob('*.py') if x.is_file()])[1:-1])
```

双引号
```
python -c "from pathlib import Path; print(','.join([f'\"{x.stem}\"' for x in Path('.').glob('*.py')]))"
python -c "from pathlib import Path; print(*[f'\"{x.stem}\"' for x in Path('.').glob('*.py')], sep=',')"
python -c "from pathlib import Path; from json import dumps; print(dumps([x.stem for x in Path('.').glob('*.py')], ensure_ascii=False)[1:-1])"
```
1  2  3  4  5  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   4253 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 27ms · UTC 05:29 · PVG 13:29 · LAX 21:29 · JFK 00:29
Developed with CodeLauncher
♥ Do have faith in what you're doing.