有很多方法可以编写计算直方图的Python程序.
通过直方图,我的意思是一个函数,它计算a中对象的出现次数iterable并输出字典中的计数.例如:
>>> L = 'abracadabra'
>>> histogram(L)
{'a': 5, 'b': 2, 'c': 1, 'd': 1, 'r': 2}
Run Code Online (Sandbox Code Playgroud)
编写此函数的一种方法是:
def histogram(L):
d = {}
for x in L:
if x in d:
d[x] += 1
else:
d[x] = 1
return d
Run Code Online (Sandbox Code Playgroud)
是否有更简洁的方法来编写此功能?
如果我们在Python中有字典理解,我们可以写:
>>> { x: L.count(x) for x in set(L) }
Run Code Online (Sandbox Code Playgroud)
但由于Python 2.6没有它们,我们必须写:
>>> dict([(x, L.count(x)) for x in set(L)])
Run Code Online (Sandbox Code Playgroud)
虽然这种方法可以读取,但效率不高:L经过多次.此外,这对单寿命发电机不起作用; 该函数应该对迭代器生成器同样有效,例如:
def gen(L):
for x in L:
yield x
Run Code Online (Sandbox Code Playgroud)
我们可能会尝试使用该reduce函数(RIP):
>>> reduce(lambda d,x: dict(d, …Run Code Online (Sandbox Code Playgroud) 我截断了几个巨大的表,但mysql文件和数据库似乎保持相同的大小.
truncate table也会从mysql中删除数据吗?
我正准备在Windows中制作绘图应用程序.我只是想知道,绘图程序有一个他们锁定的内存位图,然后设置每个像素,然后blit?
我不明白Photoshop如何在不使用硬件加速的情况下移动整个图层而不会出现滞后或闪烁.同样在像Expression Design这样的程序中,我可以拥有200个形状并一次性移动它们,没有任何延迟.我真的很想知道如果没有GPU帮助可以做到这一点.
另外,我认为超高效算法不能证明这一点吗?
我正在将我的git日志定制为1行.具体来说,我添加了以下别名:
lg = log --graph --pretty=format:'%Cred%h%Creset - %C(yellow)%an%Creset - %s %Cgreen(%cr)%Creset' --abbrev-commit --date=relative
Run Code Online (Sandbox Code Playgroud)
所以,当我跑步时git lg,我看到以下内容:
* 41a49ad - zain - commit 1 message here (3 hours ago)
* 6087812 - zain - commit 2 message here (5 hours ago)
* 74842dd - zain - commit 3 message here (6 hours ago)
Run Code Online (Sandbox Code Playgroud)
但是,我想在那里添加SVN修订号,所以它看起来像:
* 41a49ad - r1593 - zain - commit 1 message here (3 hours ago)
Run Code Online (Sandbox Code Playgroud)
正常git log显示SVN版本号,所以我确信这一定是可行的.我该怎么做呢?
我正在尝试优化数据库缓冲区大小,但我发现了
显示表状态
相当神秘.我知道数据长度是"165719261184" - 我如何将其转换为实际兆字节?
我查看了Arel源代码,以及Rails 3.0的一些activerecord源代码,但我似乎无法为自己收集一个很好的答案,因为在构造查询时Arel是否会改变我们使用includes()的能力, 为了更好.
有些情况下,人们可能想要修改activerecord上的条件:包括2.3.5及之前的查询,用于返回的关联记录.但据我所知,这对于所有人来说都不是以编程方式成立的:包含查询:
(我知道一些AR-find-includes make t#{n} .c#{m}重命名所有属性,可以想象为这些查询添加条件以限制连接集的结果;但是其他人做n_joins + 1个数字迭代地对id设置的查询,我不确定如何破解AR来编辑这些迭代查询.)
Will Arel允许我们构造ActiveRecord查询,在使用includes()时指定结果关联的模型对象?
例如:
User :has_many posts( has_many :comments)
User.all(:include => :posts) #say I wanted the post objects to have their
#comment counts loaded without adding a comment_count column to `posts`.
#At the post level, one could do so by:
posts_with_counts = Post.all(:select => 'posts.*, count(comments.id) as comment_count',
:joins => 'left outer join comments on comments.post_id = posts.id',
:group_by => 'posts.id') #i believe
#But it seems impossible to do so while …Run Code Online (Sandbox Code Playgroud) lint产生一些警告,如:
foo.c XXX Warning 534: Ignoring return value of function bar()
Run Code Online (Sandbox Code Playgroud)
来自lint 手册
534忽略功能的返回值
'符号'(与位置比较)返回值的函数仅针对副作用调用,例如,在语句本身或逗号运算符的左侧.尝试:(void)function(); 调用函数并忽略其返回值.另请参见§5.5"标志选项"中的fvr,fvo和fdr标志.
我想在编译期间得到这个警告,如果有的话.gcc/g ++中有没有选项来实现这个目的?我打开了,-Wall但显然没有发现这一点.
SQL Server"join"是否一致地保留任何类型的行顺序(即左表或右表的行)?
伪代码:
create table #p (personid bigint);
foreach (id in personid_list)
insert into #p (personid) values (id)
select id from users inner join #p on users.personid = #p.id
Run Code Online (Sandbox Code Playgroud)
假设我有一个与人员条目相对应的ID列表.这些ID中的每一个可以对应于零个或多个用户帐户(因为每个人可以具有多个帐户).
要从users表中快速选择列,我使用person ids填充临时表,然后将其与users表内连接.
我正在寻找一种有效的方法来确保连接中结果的顺序与id插入临时表时的顺序相匹配,这样返回的用户列表与人员列表的顺序相同因为它进入了.
我考虑过以下替代方案:
我目前正在使用选项3,它可以工作......但我讨厌使用order by子句来处理已经订购的东西.我只是不知道临时表是否保留了插入行的顺序或连接的操作方式以及结果的输出顺序.
编辑:
假设我使用选项3,那么有一个要订购的字段...是否有任何形式的连接将帮助SQL Server在维护订单方面做最少量的工作.我的意思是,它是否足够智能,例如,查看order by子句中的哪些表的字段,并在进行连接时首先处理该表,以便结果集的顺序大致或完全与该表的顺序一致,只是万一它已经按照预期的顺序?
C#4.0是否允许可选out或ref参数?