在列表Python中查找最长的单词

时间:2019-01-30 03:17:56

标签: python python-3.x

您能帮助我理解此代码如何工作吗?

words = ["dan","kar","dream","adsadsadad","AHAHAHAHAHAHHHAAHAHA","aaa"]
best = 0
for index in range(len(words)):
    if len(words[index]) > len(words[best]):
        best = index
print(words[best])

8 个答案:

答案 0 :(得分:1)

对于列表中的每个单词,请检查,如果当前单词的长度大于我们到目前为止所看到的最长单词,则它是新的最长单词。

基本上,我们不是每次都将单词的长度存储在列表中,而是每次都对其进行检查,然后确定最长的单词。

答案 1 :(得分:0)

我们有以下代码:

words = ["dan","kar","dream","adsadsadad","AHAHAHAHAHAHHHAAHAHA","aaa"]
best = 0
for index in range(len(words)):
    if len(words[index]) > len(words[best]):
        best = index
print(words[best])

让我们细分一下:

words = ["dan","kar","dream","adsadsadad","AHAHAHAHAHAHHHAAHAHA","aaa"]

这将创建一个各种长度的单词列表。

best = 0

此变量将索引保存到迄今为止我们遇到的最长的单词。

for index in range(len(words)):

for语句将遍历单词列表。

    if len(words[index]) > len(words[best]):

if语句检查当前索引处的单词是否长于best所指向的索引单词。

        best = index

如果到目前为止,新单词的长度大于我们的最佳单词,则将最佳单词设置为新索引。

print(words[best])

我们通过使用保存的最佳单词索引来打印单词。

答案 2 :(得分:0)

best = 0

这意味着,到目前为止,列表中的最长长度为0。此值将在循环中更新。

for index in range(len(words))

在您的示例中,len(words)为6,即列表“ words”中的单词数。因此循环将从索引0(“ dan”)变为5(“ aaa”)。

然后,程序检查当前单词的长度是否大于到目前为止最长的单词的长度。如果更长,则将当前索引保存在变量“最佳”中。

最后,它会打印与该索引相对应的单词。

答案 3 :(得分:0)

其中的for循环遍历动态创建的索引列表,该列表从0到words的长度(即6)(范围不包括第6个索引)。

然后,如果index的值索引中的单词长度大于先前选择的最长单词,则最长单词的新索引将为当前索引。

追踪: 最佳= 0 索引= 0

[index](dan)一词的长度是否大于[best](dan)一词的长度?没有。 进行下一个迭代。

最佳= 0 索引= 1

[index](kar)一词的长度是否大于[best](dan)一词的长度?没有。 进行下一个迭代。

最佳= 0 索引= 2

单词[index](梦)的长度是否大于单词[best](dan)的长度?是。 best的新值是2。

然后重复该过程,直到完成该过程为止

答案 4 :(得分:0)

您的代码正在遍历名为<ListBox x:Name="listBox" Width="400" Height="150" ScrollViewer.HorizontalScrollBarVisibility="Hidden" ItemsSource="{Binding ItemsSourceProperty}" SelectedItem="{Binding SelectedItemProperty}"> <ListBox.ItemTemplate> <DataTemplate> <TextBlock Padding="0" Margin="0" Text="{Binding DisplayTextProperty}" Width="{Binding ElementName=listBox, Path=Width}"> <TextBlock.InputBindings> <MouseBinding Command="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListBox}}, Path=DataContext.SelectProjectCommand}" Gesture="LeftDoubleClick" /> </TextBlock.InputBindings> </TextBlock> </DataTemplate> </ListBox.ItemTemplate> </ListBox> 的列表的索引0, 1, 2, ..., length-1

第一次将最大长度字符串视为索引为words的字符串,即通过设置0

在每次迭代中,它比较索引best = 0上当前字符串的长度和索引best上字符串的长度,并在条件{{1}下用新索引重置index的值。 }}的评估结果为rest

这样,在for循环完成后,您将获得最大长度字符串的确切索引。

因此,如果您要获取最大长度,则还可以计算最大长度字符串及其长度。

下面是使用len(words[index]) > len(words[best])True的单行代码,可用于获取列表中可用的最大长度字符串的长度。

reduce()

答案 5 :(得分:0)

已经有了许多好的答案,但是这里有另一个使用了key的鲜为人知的max参数:

>>> words = ["dan","kar","dream","adsadsadad","AHAHAHAHAHAHHHAAHAHA","aaa"]
>>> max(words, key=len)
'AHAHAHAHAHAHHHAAHAHA'

编辑:我在最初的回复中错过了@Indominus的评论,因此他应该得到所有的功劳:P

答案 6 :(得分:0)

上面的代码是这样的

  1. 首次初始化最佳= 0
  2. 现在基于列表的长度(从0到5)迭代for循环 索引,
  3. 如果[0]索引的单词长度大于单词索引的长度 [best]表示best将被替换为当前索引,
  4. 过程将一直持续到for循环结束
  5. 最后打印当前最佳索引值字

答案 7 :(得分:0)

除了“线性搜索”算法外,什么都没有。

让我们举一个例子,不是单词而是数字。

nums = [ 9,5,8,6,3,4 ]

#assuming the first element as our biggest number
biggest_number = nums[0]

for i in range(0, len(nums)):
  if nums[i] > biggest_number:  #comparing each number with the biggest number we assumed
    biggest_number = nums[i]   #if our current number bigger than biggest_number then replace the value

print(biggest_number)

在代码中,您只是将元素与所有其他元素一一比较,并检查当前元素是否满足条件(在这种情况下,该条件是否大于其他条件),并在该位置替换值才不是;最后返回满足条件的最后一个值。

在您的代码中,它与字符串的长度有关。