1

假设我们有一个非常大的字符串。我们只想在标准输出中显示 100 个字符。其余的将转到下一行。我的第一种方法是使用索引切片并将 startIndex 设置为递增 100,依此类推:

while (veryLargeStringLength/100 > 0):
    startIndex = 0
    veryLargeString[startIndex :startIndex+100]
    startIndex += 100
    veryLargeStringLength -= 100

这是最有效的方法吗?还有其他优化方法吗?我会说在这种情况下考虑多线程或多处理没有意义吗?

谢谢

4

2 回答 2

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
于 2013-06-04T04:22:01.007 回答
0

您可以使用 python 内置方法 range(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)]
于 2013-06-05T22:11:31.003 回答