Just call join passing in your list and if it is only one element, it won't add the "comma":
print[','.join[['1']]]
output:
1
print[','.join[['1', '2']]]
output:
1,2
print[','.join[['1', '2', '3']]]
output:
1,2,3
If you have a list of integers, or a mix of strings and integers, then you would have to call str
on the integer parts in your list. However, the easiest way to go
about doing this would be to either call map on your list [map will apply a callable to each item in your list] to cast to the appropriate str
, or perform a generator comprehension to cast to int:
comprehension:
print[",".join[str[i] for i in [1,2,3]]]
map:
print[",".join[map[str, [1,2,3]]]]
Recently I had to look for ways to converts a list of integers to a comma separated string in python.
A simple google search lead me to a couple of stack overflow articles [1] and [2], where I found a number of ways to complete the task. However, I had to find the fastest way to accomplish the task as I had to convert integer lists of length between 10000 and 12000, that too a multiple times. So, I decided to run some experiments.
Here is the sample list to convert, with the 7 contenders and outputs:
Except the last one, every other contender generates similar output. However, in a comma separated string, spaces after commas hardly makes a difference.
Experiment
To find the fastest way to convert, I made use of the timeit module.
timeit.repeat[setup, stmt, repeat=5, number=1000]
where
setup
usually takes import statements and variable initialization.
stmt
is the actual statement to measure.
The statement will be run 1000 times to get the average time to complete and getting 5 average times will help weed out a run that could have being bogged down by some other process running on the machine.
Code
Results
The values in green is the lowest execution time taken by a contender.
As you can see the unusual contender that uses the inbuilt function in list to convert to a comma separated string is by far the fastest. The slowest one I would say is the method using StringIO.
If you take the fastest run from each of the contenders, the str-list method is faster then the old-style method by almost 3 seconds.
I ran this experiment on a 3 different machines with varying configurations and the results were similar. The str-list method was the fastest.
Hope this experiment helps you as it helped me.
One last point, some of contenders also work on other lists types as well.
Convert a comma-separated number to an Integer in Python #
To convert a comma-separated number to an integer:
- Use the
str.replace[]
method to remove the commas from the string. - Use the
int[]
class to convert the string to an integer.
Copied!
my_str = '1,234,567' # ✅ Convert comma-separated numbers to an integer result = int[my_str.replace[',', '']] print[result] # 👉️ 1234567 # ✅ Convert comma-separated number to multiple integers result = [int[item] for item in my_str.split[',']] print[result] # 👉️ [1, 234, 567] # ------------------- # ✅ convert list of comma-separated numbers to integers my_list = ['1,23', '4,56', '7,89'] result = [int[item.replace[',', '']] for item in my_list] print[result] # 👉️ [123, 456, 789]
The first example converts a comma-separated number to an integer.
Copied!
my_str = '1,234,567' result = int[my_str.replace[',', '']] print[result] # 👉️ 1234567
We used the str.replace[]
method to remove the commas from the string.
Copied!
my_str = '1,234,567' print[my_str.replace[',', '']] # 👉️ '1234567'
The str.replace method returns a copy of the string with all occurrences of a substring replaced by the provided replacement.
The method takes the following parameters:
old | The substring we want to replace in the string |
new | The replacement for each occurrence of old
|
count | Only the first count occurrences are replaced [optional]
|
The method doesn't change the original string. Strings are immutable in Python.
The last step is to use the int[]
class to convert the string to an integer.
To convert a comma-separated string to a list of integers:
- Use the
str.split[]
method to split the string on each comma. - Use a list comprehension to iterate over the list of strings.
- Use the
int[]
class to convert each string to an integer.
Copied!
my_str = '1,234,567' result = [int[item] for item in my_str.split[',']] print[result] # 👉️ [1, 234, 567]
We used the str.split[]
method to split the string into a list of strings.
Copied!
my_str = '1,234,567' print[my_str.split[',']] # 👉️ ['1', '234', '567']
We then used a list comprehension to iterate over the list.
List comprehensions are used to perform some operation for every element or select a subset of elements that meet a condition.
On each iteration, we use the int[]
class to convert the current list item to an integer.