Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Put function outputs to a list in Python [duplicate]

The aim of the following program is to convert words in 4 characters from "This" to "T***", I have done the hard part getting that list and len working.

The problem is the program outputs the answer line by line, I wonder if there is anyway that I can store output back to a list and print it out as a whole sentence?

Thanks.

#Define function to translate imported list information
def translate(i):
    if len(i) == 4: #Execute if the length of the text is 4
        translate = i[0] + "***" #Return ***
        return (translate)
    else:
        return (i) #Return original value

#User input sentense for translation
orgSent = input("Pleae enter a sentence:")
orgSent = orgSent.split (" ")

#Print lines
for i in orgSent:
    print(translate(i))
like image 499
Kit Yeung Avatar asked Apr 26 '26 15:04

Kit Yeung


2 Answers

On py 2.x you can add a , after print:

for i in orgSent:
    print translate(i),

If you're on py 3.x, then try:

for i in orgSent:
    print(translate(i),end=" ")

default value of end is a newline(\n), that's why each word gets printed on a new line.

like image 143
Ashwini Chaudhary Avatar answered Apr 28 '26 03:04

Ashwini Chaudhary


Use a list comprehension and the join method:

translated = [translate(i) for i in orgSent]
print(' '.join(translated))

List comprehensions basically store the return values of functions in a list, exactly what you want. You could do something like this, for instance:

print([i**2 for i in range(5)])
# [0, 1, 4, 9, 16]

The map function could also be useful - it 'maps' a function to each element of an iterable. In Python 2, it returns a list. However in Python 3 (which I assume you're using) it returns a map object, which is also an iterable that you can pass into the join function.

translated = map(translate, orgSent)

The join method joins each element of the iterable inside the parentheses with the string before the .. For example:

lis = ['Hello', 'World!']
print(' '.join(lis))
# Hello World!

It's not limited to spaces, you could do something crazy like this:

print('foo'.join(lis))
# HellofooWorld!
like image 31
Volatility Avatar answered Apr 28 '26 03:04

Volatility



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!