簡體   English   中英

在python中的單詞字符串中找到最短的字符串

[英]Finding the shortest string in a string of words in python

我想編寫一個函數,該函數將返回單詞字符串中最短字符串的長度。 示例:“我吃蘋果”將返回1,因為“ I”是短路的字符串。 這就是我所做的,但是mincount既不遞增,也不在每個字符串的末尾設置為0。 怎么了

def find_short(s):
    min=99
    for i in s:
        mincount = 0
        for j in i:
            print(j)
            mincount += 1
            print(mincount)
        if (mincount < min):
            min = mincount
    return min 
line = "I eat apples"
mins = min(len(word) for word in line.split())
print(mins)

line.split()會將行拆分為單詞列表,然后僅查找最小長度

如果您想要快速簡便的解決方案,我會建議@pramod的答案,但是我將使用您的函數並向您顯示發生了什么。

def find_shortest(string):
    smallest_length = 99
    for word in string.split():
        current_length = 0
        for letter in word:
            current_length += 1
        if current_length < smallest_length:
            smallest_length = min_length
    return smallest_length

變化

  • 我重命名了大多數變量以使其用途更清晰
    • 值得注意的是,變量min已重命名。 由於min已經定義為一個函數,因此可能會引起問題。
  • for word in stringfor word in string.split()更改for word in string for word in string.split() 默認情況下, split()根據空白將字符串分成一個列表。 以前,您只是簡單地遍歷每個字符,這是有問題的。

注意: smallest_length設置為99假定最小單詞的長度為99個字符或更少。 對於較大的單詞,請將其設置得較高。

您可以通過鍵功能使用min

# split the string by spaces and pick the min based on the lenght of splitted string
# Example:

string = "I eat apples"
final = min(string.split(), key = lambda x: len(x))

print(final)
# >>> I

確定文本中最小單詞的長度的功能

def lenmin(text):
    return len(min(text.split()))

lenmin("I eat apples")

這將返回1

使用lambda

>>> lenmin = lambda t: len(min(t.split()))
>>> lenmin("you eat apples")
2

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM