2015-10-09 4 views
0

Как бы один ответ на этот вопрос рамочную FOOR используя правильный синтаксис Python:Как написать функцию в цикл

def int_all_2(str_list): 
    '''(list of str) -> NoneType 
    Replace every str element of str_list with its corresponding 
    int version. 
    For example, 
    >>> sl = ['100', '222', '2', '34'] 
    >>> int_all_2(sl) 
    >>> sl 
    [100, 222, 2, 34] 
    ''' 

Будет ли это быть так?

l = [] 
    for x in str_list: 
    l.append (int_all_2(x)) 
    return l 
+1

Пожалуйста форматировать код правильно. Кроме того, если у вас есть возможное решение, вы можете не просто попробовать, если он работает? – Roope

+0

Предполагая, что ваш список ТОЛЬКО содержит числовые целые строки: 'l = [int (itm) для itm в str_list]' –

ответ

1

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

def strs2ints(l): 
    return map(int,l) 

Вы должны также отметить, что функция strs2ints Безразлично» t изменить содержимое массива l.

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

def strs2ints(l): 
    for i in range(len(l)): 
     l[i] = int(l[i]) 
+0

Спасибо, теперь это имеет смысл! –

0

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

l = [int(itm) for itm in str_list] 

Если вы хотите игнорировать возможные строки:

l = [int(itm) for itm in str_list if not itm.isalpha] 

Или, если вы требуют функции:

def int_all(str_list): 
    return [int(itm) for itm in str_list] 
Смежные вопросы