On 2022-04-28, Stephen Tucker <stephen_tuc...@sil.org> wrote: > Hi PythonList Members, > > Consider the following log from a run of IDLE: > >================== > > Python 2.7.10 (default, May 23 2015, 09:40:32) [MSC v.1500 32 bit (Intel)] > on win32 > Type "copyright", "credits" or "license()" for more information. >>>> print (u"\u2551") > ║ >>>> print ([u"\u2551"]) > [u'\u2551'] >>>> > >================== > > Yes, I am still using Python 2.x - I have good reasons for doing so and > will be moving to Python 3.x in due course. > > I have the following questions arising from the log: > > 1. Why does the second print statement not produce [ ║] or ["║"] ?
print(x) implicitly calls str(x) to convert 'x' to a string for output. lists don't have their own str converter, so fall back to repr instead, which outputs '[', followed by the repr of each list item separated by ', ', followed by ']'. > 2. Should the second print statement produce [ ║] or ["║"] ? There's certainly no obvious reason why it *should*, and pretty decent reasons why it shouldn't (it would be a hybrid mess of Python-syntax repr output and raw string output). > 3. Given that I want to print a list of Unicode strings so that their > characters are displayed (instead of their Unicode codepoint definitions), > is there a more Pythonic way of doing it than concatenating them into a > single string and printing that? print(' '.join(list_of_strings)) is probably most common. I suppose you could do print(*list_of_strings) if you like, but I'm not sure I'd call it "pythonic" as I've never seen anyone do that (that doesn't mean of course that other people haven't seen it done!) Personally I only tend to use print() for debugging output. > 4. Does Python 3.x exhibit the same behaviour as Python 2.x in this respect? Yes. -- https://mail.python.org/mailman/listinfo/python-list