2015-05-27 4 views
0

Я относительно новичок в python и нуждаюсь в руке с использованием разделителя при построении строки с циклом for.Использование разделителя при построении строки

Я определил эту функцию:

def to_string(my_list, sep = ', '): 

    string = '' 
    for s in my_list: 
     s = str(s) 
     string = string + s 
    return(string) 

Но мне нужно, чтобы быть в состоянии отделить каждый элемент списка с «». Все методы, если они были до сих пор, оставляют запятую после последнего элемента при печати. Это для задачи uni, поэтому я не могу использовать любые встроенные функции, кроме str() и range()

Редактировать: забыл упомянуть, что мы не можем использовать строковые методы, методы списка и нарезку. Кроме того, мы должны использовать цикл.

+0

Как насчет 'len'? – mgilson

+0

Да, я могу использовать len –

+0

Добро пожаловать в Stack Overflow! В отличие от форумов, мы не используем «Спасибо», или «Любая помощь оценена», или подписи на [so]. См. «[Должны ли« Привет »,« спасибо », теги и приветствия удалены из сообщений?] (Http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be -removed-from-posts). –

ответ

2

Если список содержит пункты str типа, то

SEPERATOR = ", " 
SEPERATOR.join(MY_LIST) 

Если список содержит целые элементы или типы, не список

SEPERATOR = ", " 
SEPERATOR.join(map(str,MY_LIST) 

Например:

In [4]: a = [1,2,4,5,6,7] 

In [7]: map(str,a) 
Out[7]: ['1', '2', '4', '5', '6', '7'] 

In [8]: ", ".join(map(str,a)) 
Out[8]: '1, 2, 4, 5, 6, 7' 
2

Ответ данные Hitesh Dharamdasani - это то, что я рекомендую вам использовать в реальном коде. Если, однако, вам не разрешено использовать метод str.join (потому что ваш класс пытается научить вас делать то, что он делает по своему усмотрению), я предлагаю изменить текущий код для обработки первого или последнего элемента в список отличается от других.

Например, вы можете инициализировать переменную string в первом элементе списка (а не в пустом списке), а затем закодировать оставшуюся часть строки (пропустить первый элемент), объединив разделитель, а затем следующий элемент проходит через цикл. Или вы можете начать с пустой строки и добавить в строку все, кроме последнего элемента, за которым следует разделитель, а затем (после окончания цикла) добавьте последний элемент самостоятельно (без разделителя после него).

Для обоих этих решений использование кусочка списка, вероятно, является самым простым способом. Это будет выглядеть как my_list[1:] или my_list[:-1]. Другим подходом было бы использовать функции iter и next, чтобы получить итератор из списка, а затем вынуть первый элемент, а затем использовать итератор в цикле for, чтобы перебрать остальные элементы. Это потребовало бы, чтобы некоторая обработка исключений работала корректно в пустом списке, хотя это может быть за пределами того, что вы узнали до сих пор.

+0

забыл упомянуть, что мы не можем использовать нарезки, строковые методы или методы списка –

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