Concatenating immutable sequences results in a new object. This causes a quadratic runtime cost when done inside loop.
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
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