Tom
Tom

Reputation:

convert nested lists to string

How can I convert the following list to a string?

list1= [[1, '1', 1], [2,'2',2], [3,'3',3]]

Result: '1 1 1'
        '2 2 2'
        '3 3 3'

Thanks

Upvotes: 5

Views: 18479

Answers (7)

def get_list_values(data_structure, temp=[]):
    for item in data_structure:
        if type(item) == list:
            temp = get_list_values(item, temp)

        else:
            temp.append(item)

    return temp


nested_list = ['a', 'b', ['c', 'd'], 'e', ['g', 'h', ['i', 'j', ['k', 'l']]]]
print(', '.join(get_list_values(nested_list)))

Output:

a, b, c, d, e, g, h, i, j, k, l

Upvotes: 0

Tom
Tom

Reputation:

ended up with this:

for a, b, c in data:
    print(repr(a)+' '+repr(b)+' '+repr(c))

i had to write the output to a textfile, in which the write() method could only take type str, this is where the repr() function came in handy

repr()- Input: object; Output: str

...shoulda stated I was working in Python tho...thanks for the input

Upvotes: -1

Omkar
Omkar

Reputation: 3620

Faster and Easier way:

Result = " ".join([' '.join([str(c) for c in lst]) for lst in list1])

Upvotes: 3

Anurag Uniyal
Anurag Uniyal

Reputation: 88855

here is a one liner

>>> print "'"+"' '".join(map(lambda a:' '.join(map(str, a)), list1))+"'"
'1 1 1' '2 2 2' '3 3 3'

Upvotes: 1

manlycode
manlycode

Reputation: 431

You could call join on each of the arrays. Ex:

list1= [[1, '1', 1], [2,'2',2], [3,'3',3]]

stringified_groups = []

list1.each do |group|
  stringified_groups << "'#{group.join(" ")}'"
end

result = stringified_groups.join(" ")

puts result

This loops through each of the groups. It joins the groups with a space, then wraps it in single quotes. Each of these groups are saved into an array, this helps formatting in the next step.

Like before the strings are joined with a space. Then the result is printed.

Upvotes: 1

cloudhead
cloudhead

Reputation: 15353

Could be ruby too, in which case you'd do something like:

list = [[1, '1', 1], [2,'2',2], [3,'3',3]]
list.join(' ')

which would result in "1 1 1 2 2 2 3 3 3"

Upvotes: -1

Colin Burnett
Colin Burnett

Reputation: 11548

Looks like Python. List comprehensions make this easy:

list1= [[1, '1', 1], [2,'2',2], [3,'3',3]]
outlst = [' '.join([str(c) for c in lst]) for lst in list1]

Output:

['1 1 1', '2 2 2', '3 3 3']

Upvotes: 9

Related Questions