我必须在包含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 中将指数浮点数四舍五入为两位十进制表示。
4.311237638482733e-91 --> 4.31e-91
Run Code Online (Sandbox Code Playgroud)
你知道有什么快速的技巧可以做到这一点吗?
简单的解决方案,例如round(float, 2)并且"%.2f"%float不使用指数浮点数:/
编辑: 这不是关于舍入浮点数,而是舍入指数浮点数,因此它与如何在 Python 中将数字舍入为有效数字不同
我需要减小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) python ×2
exponential ×1
fastq ×1
myisam ×1
mysql ×1
performance ×1
rounding ×1
set ×1
varchar ×1