Converting a List of ASCII Values to a String in Python

Dec 01, 2025 · Programming · 10 views · 7.8

Keywords: Python | ASCII | String Conversion

Abstract: This article explores various methods to convert a list of ASCII values to a string in Python, focusing on the efficient use of the chr() function and join() method. It compares different approaches including list comprehension, map(), bytearray, and for loops, providing code examples and performance insights.

Introduction

In Python programming, it is common to encounter lists containing ASCII values that need to be converted into human-readable strings. This process is essential for tasks such as data processing and output formatting.

Method 1: Using chr() and join() (Best Practice)

Based on the best answer from community discussions, the most Pythonic and efficient method is to use the chr() function in combination with ''.join(). The chr() function converts an integer ASCII value to its corresponding character, and ''.join() concatenates these characters into a single string.

L = [104, 101, 108, 108, 111, 44, 32, 119, 111, 114, 108, 100]
result = ''.join(chr(i) for i in L)
print(result)  # Output: 'hello, world'

This method is preferred due to its readability and efficiency, as it avoids repeated string concatenation overhead.

Other Methods

Using map()

The map() function can be applied with chr to convert each ASCII value, followed by ''.join() to form the string.

a = [71, 101, 101, 107, 115]
res = ''.join(map(chr, a))
print(res)  # Output: 'Geeks'

Using List Comprehension

Similar to the generator expression in Method 1, a list comprehension can be used for clarity.

res = ''.join([chr(val) for val in a])
print(res)

Using bytearray

For byte-oriented tasks, creating a bytearray and decoding it is efficient.

res = bytearray(a).decode()
print(res)

Using For Loop

A traditional approach using a for loop, though less efficient due to string concatenation.

res = ""
for val in a:
    res += chr(val)
print(res)

Comparison and Best Practices

Method 1 with generator expression is generally the best for its balance of readability and performance. The map() method is also efficient but slightly less readable. bytearray is optimal for large datasets or byte handling. The for loop method should be avoided for large lists due to its inefficiency.

In conclusion, understanding these methods allows developers to choose the most appropriate approach based on context and performance requirements.

Copyright Notice: All rights in this article are reserved by the operators of DevGex. Reasonable sharing and citation are welcome; any reproduction, excerpting, or re-publication without prior permission is prohibited.