Py学习  »  schwobaseggl  »  全部回复
回复总数  5
5 年前
回复了 schwobaseggl 创建的主题 » python列表理解与计数

以下内容将在某种程度上干掉您的代码:

from collections import defaultdict

bounds = [10, 100, 500, 1000, 2000, 5000, 10000]
counts = defaultdict(int)

with open("result.txt", "rt") as f_i:
    for line in f_i:
        a, b = (int(float(token)) for token in line.split("-"))
        c = a-b
        if c < 0: 
            continue
        for bound in bounds:
            if c < bound:
                counts[bound] += 1
                break

with open("result.txt", "w") as f_o:
    lower = 0
    for bound in bounds:
        # f_o.write(f'in range {lower}-{bound} - {counts[bound]}\n')
        f_o.write('in range {}-{} - {}\n'.format(lower, bound, counts[bound]))
        lower = bound
6 年前
回复了 schwobaseggl 创建的主题 » python:对列表中具有相同符号的相邻数字求和

使用 itertools.groupby sum :

from itertools import groupby

ls = [5, -2, -2, 2, -4, -2 ,-2, 7, 3, 1]

[sum(g) for _, g in groupby(ls, key=lambda x: x < 0)]
# [5, -4, 2, -8, 11]
6 年前
回复了 schwobaseggl 创建的主题 » django在不下载和重新加载的情况下将远程文件分配给filefield

FileField 菲尔德只是个皮条客 CharField ,通常持久化路径(取决于存储)。找出上传文件的存储路径(例如,通过应用程序上传的其他文件)。可以使用值列表获取原始值:

Model.objects.filter(pk=known_instance.pk).values_list('file_field_name')

并直接为手动上载的文件设置:

instance.file_field_name = 'required/raw/value/for/resource'
instance.save()
6 年前
回复了 schwobaseggl 创建的主题 » python regex以匹配可选的双引号字符串

您可以使用以下模式。请注意,它基本上列出了这两种不同的情况,因为众所周知,括号不是规则的,而是上下文相关的,因此很难用正则表达式处理:

>>> p = re.compile(r'^(?:"[^"]+"|[^"]+)$')
>>> bool(p.match('"assets"'))
True
>>> bool(p.match('"assets'))
False
>>> bool(p.match('assets'))
True

这还假定在匹配的字符串之前或之后没有字符。

7 年前
回复了 schwobaseggl 创建的主题 » python increment运算符在一行条件语句中有奇怪的行为

运算符优先级

idcter += 1 if (idcter <= maxid) else 0

由以下分组可视化

idcter += (1 if (idcter <= maxid) else 0)

也就是说你 增量 0 如果条件不成立。

把它和

idcter = idcter + 1 if (idcter <= maxid) else 0
# ==
idcter = (idcter + 1) if (idcter <= maxid) else 0

你在哪里 分配 结果 在同样的情况下。

顺便说一句, 10000 已经超过你的 maxid 属于 9999 . 实现这种重置增量的一种典型方法是使用模运算符。在您的情况下:

idcter = (idcter+1) % (maxid+1)  # 9997 -> 9998 -> 9999 -> 0 -> 1