Можем ли мы получить эти списки в новой строке с помощью функции возврата? - PullRequest
0 голосов
/ 14 июля 2020

Я новичок в Python, поэтому этот вопрос может показаться глупым.

Я хочу напечатать (используя функцию возврата) каждый список в новой строке, а также, если утверждение истинно, добавить строку в один из элементов в списке:

row1=[1,2,3]
row2=[4,5,6]
row3=[7,8,9]

def return_func():
    a=1
    if a==1:
      return row1[0]+'b',row1[1],row1[2]
      return row2
      return row3

Это не работает, если есть какой-либо эффективный способ, вы можете опубликовать здесь. Спасибо

Ответы [ 2 ]

1 голос
/ 14 июля 2020

У вас много проблем с этим кодом.

Прежде всего, вы можете вернуться только в одной точке во время выполнения функции, после чего функция завершится.

Если вы Если вы хотите вернуть несколько списков, вам необходимо:

def return_lists():
    return [1, 2, 3], [4, 5, 6], [7, 8, 9]

lst_1, lst_2, lst_3 = return_lsts()

Если вы хотите распечатать что-то, вы должны использовать команду print(), а не return. return завершает функцию и отправляет результат туда, где он был вызван.

Во-вторых, вы не можете добавить целое число и строку, если вы хотите добавить строку в первый индекс списка, вы должен делать что-то вроде этого:

lst_1 = [1, 2, 3]
lst_1[0] = str(lst_1[0]) + 'b'

Наконец, вы не должны использовать глобальные переменные. Вы должны отправить списки при вызове функции:

def return_lists(lst_1, lst_2, lst_3):
    return lst_1, lst_2, lst_3

lst_1, lst_2, lst_3 = return_lists([1, 2, 3], [4, 5, 6], [7, 8, 9])

Собираем все вместе:

def return_func(row1, row2, row3):
    a=1
    if a==1:
      row1[0] = str(row1[0]) + 'b'
    return row1, row2, row3

row1=[1,2,3]
row2=[4,5,6]
row3=[7,8,9]

row1_new, row2_new, row3_new = return_func(row1, row2, row3)
print(row1_new)
print(row2_new)
print(row3_new)
0 голосов
/ 14 июля 2020

Я думаю, что вам нужно что-то вроде этого:

row1=[1,2,3]
row2=[4,5,6]
row3=[7,8,9]

def return_func(row):
    a = 1
    if a == 1:
        row.insert(0, "b")
        return row
        
for row in [row1, row2, row3]:
    print(return_func(row))

Таким образом, вы вызываете return_fun c три раза, каждый раз с каждой из строк [row1, row2, row3], как вы можете видеть на для л oop for row in [row1, row2, row3]:. Теперь вам нужно только напечатать его return, и он напечатает три строки, в этом случае всегда добавляя 'b' в позиции 0 всех строк, поскольку во всех случаях выполняется условие if. Вывод:

['b', 1, 2, 3]
['b', 4, 5, 6]
['b', 7, 8, 9]
...