2016-08-29 6 views
0

Я делаю упражнение из питона для книги новичков. Проект, который я застрял, выглядит следующим образом: «Напишите функцию, которая принимает в качестве аргумента список значений и возвращает строку со всеми элементами, разделенными запятой и пробелом. Ваша функция должна работать с любым списком значения, передаваемые в него»Как удалить ненужные запятые из списка python

Вот мой код:

def passInList(spam): 
     for x in range(len(spam)): 
      z = spam[x] + ', ' 
      print(z,end= ' ') 

spam=['apples', 'bananas', 'tofu', 'and cats'] 
passInList(spam) 

Ожидаемый результат является - 'яблоки, бананы, тофу и кошек'.

Мой выход «IS-яблоки, бананы, тофу, и кошки,»

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

Спасибо за предложения.

+0

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

ответ

0

Используйте join метод:

spam=['apples', 'bananas', 'tofu', 'and cats'] 
print(', '.join(spam)) 
0

добавить а, если заявление только добавить запятую, если х меньше Len (спам) -1, или еще лучше, используйте класс ул присоединиться к функции

2

Вы можете уменьшить свой код, чтобы использовать join, где вы даете ему разделитель и список, чтобы объединиться.

def passInList(spam): 
     print(', '.join(spam)) 

spam=['apples', 'bananas', 'tofu', 'and cats'] 
passInList(spam) 
+0

Спасибо. (соединение работает) –

0

Вы можете использовать функцию join, которая вызвана с синтаксисом 'str'.join(list). Он объединяет все элементы в списке с str в период между

>>> spam=['apples', 'bananas', 'tofu', 'and cats'] 
>>> my_string = ', '.join(spam) 
>>> my_string 
'apples, bananas, tofu, and cats' 
1

Как люди размещены здесь, join уже существует. Но если упражнение предназначено, чтобы понять, как реализовать join, то здесь одна возможность:

def passInList(spam): 
    s = spam[0] 
    for word in spam[1:]: 
     s += ', ' + word 
    return s 

То есть вы берете первое слово, то вы конкатенации каждого из следующих слов, используя запятую.

Еще один вариант реализации этого является использование функционального программирования, а именно, в этом случае reduce функции:

def passInList(spam): 
    return functools.reduce(lambda x, y: x + ', ' + y, spam) 

Всякий раз, когда схема объединения вещей, как в использовании предыдущей реализации-х s += ..., reduce приходит разум.

Смежные вопросы