首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何以最有效的方式(最快的执行)编写"for循环“?

如何以最有效的方式(最快的执行)编写"for循环“?
EN

Stack Overflow用户
提问于 2019-01-22 14:30:28
回答 2查看 64关注 0票数 0

我有这样的代码:

代码语言:javascript
运行
复制
all_sorted = [['9', 's'], ['11', 'h'], ['2', 's'], ['13', 'c'], ['13', 's'], ['11', 's'], ['3', 'd']]
pairness = {str(i): 0 for i in range(14, 1, -1)}
for card in all_sorted:
    pairness[card[0]] += 1

是否有可能用1行效率更高的代码来编写第2-4行代码?

EN

回答 2

Stack Overflow用户

发布于 2019-01-22 14:33:31

更短,但我不知道有多快(可能不是很多,如果有的话)

代码语言:javascript
运行
复制
>>> from collections import Counter
>>> Counter(x for x, _ in all_sorted)
Counter({'11': 2, '13': 2, '9': 1, '2': 1, '3': 1})
票数 3
EN

Stack Overflow用户

发布于 2019-01-22 14:42:48

使用collections.Counter创建零值键(与预期输出匹配)的版本:

代码语言:javascript
运行
复制
from collections import Counter

all_sorted = [['9', 's'], ['11', 'h'], ['2', 's'], ['13', 'c'], ['13', 's'], ['11', 's'], ['3', 'd']]
pairness = {**{str(i): 0 for i in range(14, 1, -1)}, **Counter(head for head, *_ in all_sorted)}

print(pairness)

输出

代码语言:javascript
运行
复制
{'8': 0, '11': 2, '14': 0, '4': 0, '12': 0, '3': 1, '2': 1, '13': 2, '5': 0, '10': 0, '7': 0, '6': 0, '9': 1}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54310480

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档