2015-10-28 2 views
0

Итак, я должен создать функцию, которая принимает любой тип итеративного ввода и преобразует его в строку этого ввода, разделенную пробелами. Например, если вы должны были вызвать iteration_to_string («abcd»), он вернул бы «a b c d» (пробел в конце разрешен). или если [1, 2, 3, 4] является входом, он должен вернуть «1 2 3 4». Все, что у меня есть до сих пор, заключается в том, как превратить ввод в набор, и Im запутался, куда идти, чтобы превратить его в строку. Я предполагаю, что это добавит что-то в цикл for, который каким-то образом объединит входы вместе с пробелом, но я не уверен, как это сделать. Любая помощь приветствуется!Преобразование набора в строку

def iteration_to_string (data): 
     new = set() 

     for i in range (len(data)): 
      new.add(data[i]) 


     return " ".join(new) 
+1

'»».join (новый)', но помните, что множества являются неупорядоченными. –

ответ

1

ваш код может не работать для списка, содержащего элемент Int, как [1,2,3,4], потому что присоединиться принимает

снабжать струной, тетивой и т.п.

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

>>> def my_join(x): 
...  return " ".join(map(str, x)) 
... 
>>> my_join([1, 2, 3, 4]) 
'1 2 3 4' 

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

>>> def my_join(x): 
...  return " ".join(str(element) for element in x)) 

>>> my_join(['a', 'b' ,'c', 'd']) 
'a b c d' 
+0

Есть ли другой способ сделать это без использования карты()? Я не узнал, что до – carroll

+0

да, вы можете использовать понимание списка, см. Мой обновленный пост – Hackaholic

1

для любого Iterable

' '.join(iterable) 

возвращает строку со всеми элементами в итерацию, разделенных пробелом. см. str.join(iterable).

если элементы в Iterable не являются строками, которые нужно

' '.join(str(item) for item in iterable) 

(вы можете сделать это с любой другой строкой, а, ''.join(iterable), если вы не хотите каких-либо пробелов между ними).

+0

Это не изменило ничего, когда я добавил его в код. Должна ли она войти в цикл for? (см. выше правки) – carroll

+0

скорее: 'return '. .join (new)'. 'new' остается неизменным; выражение возвращает 'str'. или 'new_str = '. .join (новый); return new_str'. –

+0

Это работает, если у вас есть строковый ввод, но нет, если его список или заданный ввод – carroll