Как убрать круглые скобки и апострофы при использовании функции для сборки вектора с именем? - PullRequest
0 голосов
/ 20 октября 2018

Я хочу напечатать список без скобок и апострофов.

def vec_print(list, name):
    name += " ="
    return name, list

print(vec_print([1.20,4.50,4.40],'vec1'))

Ответы [ 4 ]

0 голосов
/ 20 октября 2018

Добро пожаловать в stackoverflow.Есть несколько причин, по которым ваш вопрос здесь не получил положительной реакции.

  • Вы на самом деле не задавали вопрос.Вы не можете просто сказать, что вы хотите, и ожидать, что сообщество с готовностью поможет вам.

  • Вы не сказали нам, что вы сделали до сих пор, чтобы решить это самостоятельно.

Я предполагаю, что вы получили такой вывод:

('vec1 =', [1.2, 4.5, 4.4])

, но надеялись на

vec1 = [1.2, 4.5, 4.4]

Есть несколько способов получить то, чтоВы хотите, но вы должны сначала понять, почему это произошло.В вашей функции vec_print вы возвращаете два значения: return name, list.В Python, если вы делаете это, вы на самом деле возвращаете кортеж возвращаемых значений.Когда вы печатали возвращаемое значение, вы печатали представление кортежа из двух элементов.

Существует два пути к решению:

  1. Не возвращать кортеж.Это будет выглядеть примерно так: return name + repr(list)
  2. Соедините элементы кортежа и напечатайте его вместо кортежа.Самый простой способ - использовать оператор * для доставки элементов кортежа в функцию печати: print(*vec_print([1.20,4.50,4.40],'vec1')) Это работает в python3, потому что печать - это функция.В python2 это будет ошибкой, поскольку print является оператором, а не функцией, если вы не выполните from __future__ import print_function
0 голосов
/ 20 октября 2018

Скобки печатаются, потому что вы возвращаете кортеж, и представление кортежа с (...).

Просто верните строку:

def vec_print(list, name):
    return "{} = {}".format(name, list)

print(vec_print([1.20, 4.50, 4.40], 'vec1'))
0 голосов
/ 20 октября 2018

Вы можете объединить элементы списка после сопоставления их со строками и использовать для форматирования строки:

def vec_print(lst, name):
    return '{} = {}'.format(name, ', '.join(map(str, lst)))
print(vec_print([1.20,4.50,4.40], 'vec1'))

Это выводит:

vec1 = 1.2, 4.5, 4.4
0 голосов
/ 20 октября 2018

Вы имеете в виду, как это?

def vec_print(lst, name):
    return name + ' = ' + repr(lst)

print(vec_print([1.20,4.50,4.40], 'vec1'))  # -> vec1 = [1.2, 4.5, 4.4]

Я изменил имя аргумента с list на lst, потому что первый - это имя типа, встроенного в Python, и лучше избегать переопределениялюбой из них (во-первых, это смущает людей, читающих ваш код).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...