假设我们有一个非常大的字符串。我们想在stdout中只显示100个字符。其余的将进入下一行。我的第一个方法是使用索引切片并将startIndex设置为100,依此类推:
while (veryLargeStringLength/100 > 0):
startIndex = 0
veryLargeString[startIndex :startIndex+100]
startIndex += 100
veryLargeStringLength -= 100
这是最有效的方法吗?还有其他优化方法吗?我会说在这种情况下,对于多线程或多处理是否有任何意义?
由于
答案 0 :(得分:4)
这样的事情:
n = 100
for i in xrange(0, len(strs), n):
print strs[i:i+n]
代码的工作版本:
veryLargeStringLength = len(strs)
startIndex = 0 #this should be before the loop
while veryLargeStringLength > 0: #use just >0, no need of division
print veryLargeString[startIndex :startIndex+100]
startIndex += 100
veryLargeStringLength -= 100
答案 1 :(得分:0)
您可以使用python内置方法范围(start,stop [,step])来实现此目的。从0开始,在字符串的末尾停止(即字符串的长度)并以100的步长遍历
for group_of_char in [veryLargeString[i:i+100] for i in range(0, len(veryLargeString), 100)]:
print group_of_char
或者更好地将此逻辑转换为方法并调用为适合
def slice_string_in_n_size_pieces(input_string, n_size):
return [input_string[i:i+n_size] for i in range(0, len(input_string), n_size)]