Python中字符串比较用双引号"1"是否比单引号'1'速度更快
Python 单引号
''和双引号""的区别及耗时问题解答 核心结论
Python中''和""定义的字符串没有本质差异,不存在单引号写法耗时更长的特性,你遇到的单引号版本无法过测、双引号版本过测的情况,和引号类型本身无关。
单双引号的实际区别
二者在语义、执行效率上完全一致,唯一的差异仅在书写便利性层面:
- 两种引号都可用于定义普通字符串,只要前后引号配对即可,生成的字符串对象完全等价:
'1' == "1"返回True,小字符串驻留机制下二者是同一个内存对象,执行比较操作的速度没有任何差别。 - 当字符串内容本身包含单引号时,用双引号定义字符串不需要额外转义;当字符串内容本身包含双引号时,用单引号定义字符串不需要额外转义,仅此而已。
示例:- 包含单引号的场景:
"I'm a coder"等价于'I\'m a coder',前者不需要写转义符 - 包含双引号的场景:
'他说"加油"'等价于"他说\"加油\"",前者不需要写转义符
- 包含单引号的场景:
单引号版本超时的真实原因
你遇到的超时问题是OJ平台的资源调度波动+代码本身时间复杂度卡在临界值导致的偶然结果:
- 你提交的
acmTeam函数实现本身时间复杂度很高:两层遍历所有人员组合的O(n²)循环,内部对每对组合都做了二进制转整数、按位或、再转回二进制字符串、最后逐位统计1的个数的操作,本身运行耗时就刚好卡在HackerRank的时间限制边缘。 - 在线判题平台每次运行代码分配的CPU算力、缓存状态都存在微小波动,同一份代码连续提交多次,都可能出现有时过、有时超时的情况。你刚好在提交双引号版本时碰到资源充足的运行环境顺利过测,提交单引号版本时碰到资源紧张的环境触发超时,和你判断字符时用单引号还是双引号没有因果关系。
对照验证方法:保持单引号写法不变连续提交3-5次,大概率会出现提交通过的结果;反过来保持双引号写法连续提交多次,也可能碰到超时的情况。
相关运行截图
- 单引号写法运行结果:

- 双引号写法运行结果:

题目对应实现代码
#!/bin/python3 import math import os import random import re import sys # # Complete the 'acmTeam' function below. # # The function is expected to return an INTEGER_ARRAY. # The function accepts STRING_ARRAY topic as parameter. # def acmTeam(topic): m=0 count=0 for i in range(len(topic)): for j in range(i+1,len(topic)): k=(bin(int(topic[i],2) | int(topic[j],2)))[2:] # if k>m: # m=k # count=1 # elif m==k: # count+=1 val=0 for ind in range(len(k)): if (k[ind]=="1"): val+=1 if val>m: count=1 m=val elif val==m: count+=1 return [m,count]
内容的提问来源于stack exchange,提问作者Amish Gupta
相关产品推荐
相关产品推荐

