I have a 2D list of characters in this fashion:
a = [['1','2','3'],
['4','5','6'],
['7','8','9']]
What's the most pythonic way to print the list as a whole block? I.e. no commas or brackets:
123
456
789
There are a lot of ways. Probably a str.join of a mapping of str.joins:
>>> a = [['1','2','3'],
... ['4','5','6'],
... ['7','8','9']]
>>> print('\n'.join(map(''.join, a)))
123
456
789
>>>
join(map('' vs join([''.join(x) for x in a]). In the latter, the outer join knows the size of the list and the items and allocates the output string in one go.list will be faster. Likely, this code won't be performance critical. From the point of view of style and ease, I would be OK with this.map makes up for the speed loss of the listcomp. A generator comprehension would be the slowest.print('\n'.join(list(map(''.join, a)))) if you are on Python 3. In any event, you can just benchmark with a couple large lists using the timeit module. Indeed, the "Basic examples" in the docs are very similar to your situation...Best way in my opinion would be to use print function. With print function you won't require any type of joining and conversion(if all the objects are not strings).
>>> a = [['1','2','3'],
... ['4', 5, 6], # Contains integers as well.
... ['7','8','9']]
...
>>> for x in a:
... print(*x, sep='')
...
...
123
456
789
If you're on Python 2 then print function can be imported using from __future__ import print_function.
I'm a beginner learner, so please take my post with a few spoons of salt. But I have a better idea ( which includes printing a list with string+ integers)
D2List=[[1,2,3],[4,"Bingo",5],[6,7,8]]
for x,y,z in D2List:
print ("x,y,z")
I got it working: https://github.com/Bahaa2468/Python/blob/22e6cfc9b478f9336ef0be283e2693c40f13d538/Bingo%20Game.Generator.py
If you're looking for Pythonic then you surely need a generator comprehension:
print('\n'.join(''.join(i) for i in array))
join, passing a list comprehension instead is faster because join creates one anyway (needs that to pre-compute the size): '\n'.join([''.join(i) for i in array]) even if it's uglier :)