简体   繁体   中英

More elegant/Pythonic way of printing elements of tuple?

I have a function which returns a large set of integer values as a tuple. For example:

def solution():
    return 1, 2, 3, 4 #etc.

I want to elegantly print the solution without the tuple representation. (ie parentheses around the numbers).

I tried the following two pieces of code.

print ' '.join(map(str, solution())) # prints 1 2 3 4
print ', '.join(map(str, solution())) # prints 1, 2, 3, 4

They both work but they look somewhat ugly and I'm wondering if there's a better way of doing this. Is there a way to "unpack" tuple arguments and pass them to the print statement in Python 2.7.5?

I would really love to do something like this:

print(*solution()) # this is not valid syntax in Python but I wish it was

kind of like tuple unpacking so that it's equivalent to:

print sol[0], sol[1], sol[2], sol[3] # etc.

Except without the ugly indexes. Is there any way to do that?

I know this is a stupid question because I'm just trying to get rid of parentheses but I was just wondering if there was something I was missing.

print(*solution()) actually can be valid on python 2.7, just put:

from __future__ import print_function

On the top of your file.

You could also iterate through the tuple:

for i in solution():
    print i,

This is equivalent to:

for i in solution():
    print(i, end= ' ')

If you ever use Python 3 or the import statement above.

You can also try:

print str(solution()).strip('()')

Another possibility noted by eyquem in the comment:

print repr(solution())[1:-1]

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM