2015-02-13 2 views
-3

Напишите функцию с именем shortest(), которая находит длину самой короткой строки в списке строк. Функция shortest() принимает один параметр: 1. список строк, textList Функция shortest() должна возвращать длину самой короткой строки в textList. Вы можете предположить, что textList содержит хотя бы один элемент (строку).Напишите функцию с именем shortest(), которая находит длину самой короткой строки в списке строк

Например, следующая программа будет выводить 1:

beatleLine = ['I', 'am', 'the', 'walrus'] 
print(shortest(beatleLine)) 

Я понятия не имею, куда идти отсюда:

def shortest(textList): 
    for element in textList: 
    min(textList) 
+0

Это практика среднесрочный, что я пытаюсь учиться, хотя спасибо за ответ. – Timothy

ответ

0

Я бы так:

def shortest(textList): 
    shortest_string_len=len(textList.pop()) 
    for text in textList: 
     actual_text_len=len(text) 
     if actual_text_len < shortest_string_len: 
      shortest_string_len=actual_text_len 
    return (shortest_string_len) 


beatleLine = ['I', 'am', 'the', 'walrus'] 
print(shortest(beatleLine)) 
+0

Предложение: Первая строка этой функции должна проверять, что textList не пуст перед вызовом 'textList.pop()' – selbie

+2

Также это очень страшно, поскольку он фактически мутирует список, который вы передаете. Я был бы очень расстроен, если бы обнаружил, что функция переопределяет «min (x, key = len)», который меняет мой список, не документируя этот факт! –

+1

@selbie: Ну, программные спецификации говорят, что вам разрешено считать, что список не пуст. Который немного слабее, ИМХО, но это программные спецификации для вас. :) Тем не менее, я строго согласен с Адамом, что бесполезно и бесшумно мутирует аргумент функции. –

0

Это довольно просто с лямбды:

shortest = lambda strings: len(min(strings, key = len)) 
+2

'key = len' ....... –

+0

Ashwini, все, что вы сделали, это изменить мой маленький segue, вы ничего не изменили, чтобы изменить код. –

+1

Этот ответ неправильный, я думаю - он возвращает (одну из) кратчайшие строки, но OP ищет «длину самой короткой строки». Такие вещи случаются, если вы слишком стараетесь. – DSM

3

Это самое вещая версия:

def shortest_length(textlist): 
    return min(len(i) for i in textlist) 

хотя здесь map тоже красиво:

def shortest_length(textList): 
    return min(map(len, textlist)) 
Смежные вопросы