小编Les*_*zek的帖子

python中的成员资格测试比set()更快

我必须在包含10-100k这些元素的列表中检查数百万个元素(20-30个字母str)的存在.在python中有更快的方法set()吗?

import sys
#load ids
ids = set( x.strip() for x in open(idfile) )

for line in sys.stdin:
    id=line.strip()
    if id in ids:
        #print fastq
        print id
        #update ids
        ids.remove( id )
Run Code Online (Sandbox Code Playgroud)

python performance set fastq

19
推荐指数
2
解决办法
2万
查看次数

将指数浮点数舍入到小数点后两位

我想在 Python 中将指数浮点数四舍五入为两位十进制表示。

4.311237638482733e-91 --> 4.31e-91
Run Code Online (Sandbox Code Playgroud)

你知道有什么快速的技巧可以做到这一点吗?
简单的解决方案,例如round(float, 2)并且"%.2f"%float不使用指数浮点数:/

编辑: 这不是关于舍入浮点数,而是舍入指数浮点数,因此它与如何在 Python 中将数字舍入为有效数字不同

python rounding exponential

9
推荐指数
1
解决办法
9377
查看次数

从VARCHAR列中删除一些数据后,为什么MySQL MyISAM表的大小相同?

我需要减小MySQL数据库的大小.我记录了一些条纹';'的信息.和sources列中的':' (减少约10%).执行此操作后,表的大小与之前完全相同.这怎么可能?我正在使用MyISAM引擎.

顺便说一句:不幸的是,我无法压缩表格myisampack.

mysql> INSERT INTO test SELECT protid1, protid2, CS, REPLACE(REPLACE(sources, ':', ''), ';', '') FROM homologs_9606; 
Query OK, 41917131 rows affected (4 min 11.30 sec)
Records: 41917131  Duplicates: 0  Warnings: 0

mysql> select TABLE_NAME name, ROUND(TABLE_ROWS/1e6, 3) 'million rows', ROUND(DATA_LENGTH/power(2,30), 3) 'data GB', ROUND(INDEX_LENGTH/power(2,30), 3) 'index GB' from information_schema.TABLES WHERE TABLE_NAME IN ('homologs_9606', 'test') ORDER BY TABLE_ROWS DESC LIMIT 10;
+---------------+--------------+---------+----------+
| name          | million rows | data GB | index GB |
+---------------+--------------+---------+----------+ …
Run Code Online (Sandbox Code Playgroud)

mysql varchar myisam size-reduction

5
推荐指数
1
解决办法
348
查看次数