turning a list back into a string python

convert list of int to string python
python list to string with commas
list of strings to string python
convert list to string java
convert string to list python
convert list to string c#
python list to string with spaces
convert single item list to string python

The first function is able to separate each letter of a string and list how many times that letter appears. For example:

print(rlencode("Hello!"))
[('H', 1), ('e', 1), ('l', 2), ('o', 1), ('!', 1)]

How do I get rldecode(rle): do the the complete opposite of rlencode(s) so that rldecode(rlencode(x)) == x returns True

def rlencode(s):
    """
    signature: str -> list(tuple(str, int))
    """
    string=[]
    count=1
    for i in range(1,len(s)):
        if s[i] == s[i-1]:
            count += 1
        else:
            string.append((s[i-1], count))
            count=1
        if i == len(s)-1:
            string.append((s[i], count))
    return string



def rldecode(rle):
    """
    #signature: list(tuple(str, int)) -> str
    #"""
    string=" "
    count=1
    for i in rle:
        if i == rle:
            string += i
    return string

You can use the fact that you can multiply a string by a number to repeat it and use `''.join() to bring the elements of the list together.

To show the effect of string multiplication, I multiplied "a" by 5

"a"*5 #'aaaaa'

Using that in a comprehension will give you

str = [char[0]*char[1] for char in rle] #['H', 'e', 'll', 'o', '!']

Then add in the ''.join() and you have your answer.

l = [('H', 1), ('e', 1), ('l', 2), ('o', 1), ('!', 1)]
str = ''.join(char[0]*char[1] for char in rle) #'Hello!'

So your function would be

def rldecode(rle):
    """
    signature: list(tuple(str, int)) -> str
    """
    return ''.join(char[0]*char[1] for char in rle) 

Also, if you would like to make your rlencode a little cleaner, you can simplify it a little bit by using enumerate to help you keep your position in the string and check if you're about to hit either a new character or the end of the string. You just have to increment the counter on each loop.

def rlencode(s):

    output = []
    count = 0

    for i, char in enumerate(s):

        count += 1

        if (i == (len(s)-1)) or (char != s[i+1]):
            output.append((char, count))
            count = 0

    return output

Python tips, Python - Remove Rear K characters from String List · Striver. Check out this Author's contributed articles. If you like GeeksforGeeks and would like  Python program to convert a list to string Given a list, write a Python program to convert the given list to string. There are various situation we might encounter when a list is given and we convert it to string. For example, conversion to string from the list of string or the list of integer.

Use join:

b = [('H', 1), ('e', 1), ('l', 2), ('o', 1), ('!', 1)]
''.join([c[0] * c[1] for c in b])
Hello!

You can also use list comprehensions for your initial function.

Python, join() function with an iterator as argument or by using map() function. Python : Convert list of lists or nested list to flat list Python : Check if all elements in a List are same or matches a condition Python : Check if a list contains all the elements of another list

You can use collections.Counter.elements():

from collections import Counter
l = [('H', 1), ('e', 1), ('l', 2), ('o', 1), ('!', 1)]
print(''.join(Counter(dict(l)).elements()))

This outputs:

Hello!

Python List to String Conversion, How do I convert a string to a list in Python? Method 1 : Traversal of list Initialize an empty string at the beginning. Traverse in the list of characters, for every index add character to the initial string. After complete traversal, print the string which has been added with every character.

A simple, readable solution is to iterate over all of the tuples in the list returned by rlencode and construct a new string from each letter (and it's frequency) like so:

def rldecode(rle):
    string = ''
    for letter, n in rle:
        string += letter*n
    return string

How to convert list to string, How do you join a list into a string in Python? It is one example of how the Python community thinks. Since join is returning a string, it should be placed in the string class, not on the list class, so the str.join(list) method means: join the list into a new string using str as a separator (in this case str is an empty string). Somehow I got to love this way of thinking after a while.

An answer that's easy to read but also accounts for ordering in the problem:
def rlencode(s):
    """
    signature: str -> list(tuple(str, int, list(int)))
    """
    result=[]
    frequency=1
    for i in range(len(s)):
        letters = [item[0] for item in result]
        if s[i] in letters:
            idx = letters.index(s[i])
            frequency=result[idx][1]
            frequency+=1
            positions= result[idx][2]
            positions.append(i)
            result[idx] = (s[i],count,lst)
        else:
            result.append((s[i],1,[i]))
    return result




def rldecode(rle):
    """
    #signature: list(tuple(str, int, list(int))) -> str
    #"""

    frequencies = [i[1] for i in rle]
    total_length = sum(frequencies)
    char_list=[None]*total_length
    for c in rle:
        for pos in c[2]:
            char_list[pos] = c[0]
    return "".join(char_list)


text = "This is a lot of text where ordering matters" 
encoded = rlencode(text)
print(encoded)
decoded = rldecode(encoded)
print(decoded)

I adapted it from the answer posted by @Brian Cohan

It should be noted that the answer is computationally expensive because of .index() if letter grows really long as explained in this SO post

How to Convert Python List to String with Examples, By using ''.join list1 = ['1', '2', '3'] str1 = ''.join(list1). Or if the list is of integers, convert the elements before joining them. list1 = [1, 2, 3] str1  The syntax for join() method as described in the python documentation is as follows: string_name.join(iterable) Things to be noted: It returns a string concatenated with the elements of iterable. The separator between the elements being the string_name. Any non-string value in the iterable will raise a TypeError

Python : How to Convert a list to string – thispointer.com, As we've told above that Python Join() function can easily convert a list to string so let's first check out its syntax. Python Join() Syntax. Convert Python List of Strings to a string using join() Convert a list of chars into a string. Conversion of a mixed list to a string using join() If we want to convert string to list operation, then we need to use the Python string split() method. Python split() method is used to split the strings and store them in the list. The split()  method returns a list of the words in the string, using the “delimiter” as the delimiter string.

In Python, how do you convert a list to a string?, How to insert lines at the top of a file? Read CSV into a list of lists or tuples or dict · Read a file in reverse order line by line. Directories in python. Python tips - How to easily convert a list to a string for display There are a few useful tips to convert a Python list (or any other iterable such as a tuple) to a string for display. First, if it is a list of strings, you may simply use join this way:

Python Program to Convert List to String, If it is a list of strings, you may simply use join: >>> my_list = ["Python", "is", "​Awesome"] >>> print Get back to business with remote talent. How do I convert string value like 0830 (which means 8:30) into time and add or subtract minutes  Many times, we come over the dumped data that is found in the string format and we require it to be represented into the actual list format in which it was actually found. This kind of problem of converting a list represented in string format back to list to perform tasks is quite common in web development.

Comments
  • Your output does not contain information about ordering. Your 'relencode` function needs to output something more like list(tuple(str, int, [positions])) in order to be able to reconstruct. Do I seem to be following what you're asking for here...?
  • If an answer on the page has satisfied what you need, please make sure you pick one :)
  • I like this, but it would be a but more readable if you used something other than lowercase "L" as your list variable and stayed away from using variables like str that can be confused with built-ins.
  • Appreciate the feedback. I changed it to rle since that's the OP's variable. Also changed c to char for legibility.
  • I like the answer and it works for OPs particular input, but wouldn't it make more sense to have rlencode and rldecode preserve ordering for inputs with non-consecutively repeated characters? (I'm trying to get a little attention for my answer xD)
  • It all depends on what the OP is looking for. Your algorithm might save a bit of storage space on longer strings, but that's the only benefit from it. Your code is much more difficult to read for both the programmer and the computer, as is the output, and as you indicated, your algorithm is quite computationally expensive. Running it 10 times on 5 paragraphs of lorem ipsum, my code averaged 0.0178s while yours averaged 0.0255s.
  • Much appreciated! @BrianCohan
  • looks ok. You could also get rid of those ugly indices by using tuple unpacking like ''.join(c * n for c, n in L)