小编tru*_*ppo的帖子

将某些值排序到顶部

我有一个MySQL表,其中包含以下数据(简化):

INSERT INTO `stores` (`storeId`, `name`, `country`) VALUES
(1, 'Foo', 'us'),
(2, 'Bar', 'jp'),
(3, 'Baz', 'us'),
(4, 'Foo2', 'se'),
(5, 'Baz2', 'jp'),
(6, 'Bar3', 'jp');
Run Code Online (Sandbox Code Playgroud)

现在,我希望能够获得以客户所在国家/地区开头的分页商店列表.

例如,美国客户会看到以下列表:

Foo
Baz
Bar
Foo2
Baz2
Bar3
Run Code Online (Sandbox Code Playgroud)

我现在正在使用的天真解决方案(例如美国客户和页面大小3):

(SELECT * FROM stores WHERE country = "us") UNION (SELECT * FROM stores WHERE country != "us") LIMIT 0,3
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来做到这一点?可以ORDER BY使用,并告诉在顶部放有一定的价值?

mysql sql-order-by

9
推荐指数
2
解决办法
2297
查看次数

为什么这个genexp表现比列表理解更差?

我试图找到最快的方法来计算匹配特定过滤器的列表中的项目数.在这种情况下,查找列表中有多少个奇数.

在这样做时,我对比较列表理解与等效生成器表达式的结果感到惊讶:

python -m timeit -s "L = xrange(1000000)" "sum([1 for i in L if i & 1])"
10 loops, best of 3: 109 msec per loop

python -m timeit -s "L = xrange(1000000)" "sum(1 for i in L if i & 1)"
10 loops, best of 3: 125 msec per loop
Run Code Online (Sandbox Code Playgroud)

我也试过L是一个常规列表,不同的大小,但在所有情况下列表理解获胜.

与使用100万个项目创建新列表的listcomp相比,genexp做什么导致它变慢?

(顺便说一下,我找到的最快的方法是:x = 1; len(filter(x.__and__, L)).是的,我知道编写像杀死小猫的代码,我这样做是为了它的乐趣)

python list-comprehension generator-expression

7
推荐指数
1
解决办法
1082
查看次数