1

非常に大きな文字列があるとしましょう。stdout に 100 文字だけを表示したいとします。残りは次の行に進みます。私の最初の方法では、インデックス スライシングを使用し、startIndex を 100 ずつインクリメントするように設定します。

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

これはこれを行う最も効率的な方法ですか?他の最適化方法はありますか? このシナリオで multiThreaded または multiprocessing を考慮しても意味がないと思いますか?

ありがとう

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 に答える