我们可以使用*运算符构建固定结构但任意长度的字符串,具体如下:
length = 10
print "0" * length
Run Code Online (Sandbox Code Playgroud)
这会返回预期的结果0000000000.当长度过大时会出现问题,导致溢出错误:
length = 10000000000000000000000000000000000000000000000
print "0" * length
Run Code Online (Sandbox Code Playgroud)
这导致了OverflowError: cannot fit 'long' into an index-sized integer.
我很好奇,这种配方能不能用于任意长度的尺寸?或者处理length未知情况并且可能具有如此大值的方案的正确方法是什么?
Thi*_*ter 10
不,您不能在任何编程语言中创建类似示例中的大字符串.字符串包含每个字符.10 46个字节最有可能比任何人存储的数据更多.你可以超过一万亿的谷歌数据中心(假设谷歌有1个存储空间,但肯定不是这样的情况......)并且仍然有更少的磁盘空间,更不用说RAM就是你需要的这样一个字符串.
要存储类似于示例中的大字符串,您必须创建自己str的类,__mul__以存储重复次数的方式处理,而不会将整个字符串实际存储在内存中.显然,只要允许修改该字符串,此实现就会变得非常复杂.
| 归档时间: |
|
| 查看次数: |
1774 次 |
| 最近记录: |