Inefficient string concatenation inside loop Info

Concatenating immutable sequences results in a new object. This causes a quadratic runtime cost when done inside loop.

Detector ID
python/string-concatenation@v1.0
Category
Common Weakness Enumeration (CWE) external icon
-

Noncompliant example

1def string_concatenation_noncompliant():
2    samplelist = ['sampleString1', 'sampleString2', 'sampleString3']
3    concatenatedstring = ''
4    for item in samplelist:
5        # Noncompliant: inefficient string concatenation inside a loop is used.
6        concatenatedstring += item + "\n"
7    return concatenatedstring

Compliant example

1def string_concatenation_compliant():
2    samplelist = ['sampleString1', 'sampleString2', 'sampleString3']
3    concatenatedlist = []
4    for item in samplelist:
5        concatenatedlist.append(item)
6        concatenatedlist.append("\n")
7    # Compliant: join function is used for string concatenation
8    concatenatedstring = ''.join(concatenatedlist)
9    return concatenatedstring