【问题标题】:How to iterate a list without inserting the new word to list?如何在不插入新单词的情况下迭代列表?
【发布时间】:2016-11-19 12:54:18
【问题描述】:

我知道如何在给定列表中索引一个单词,但是如果给定一个集合列表和一个不在列表中的单词,我如何找到新单词的索引位置而不将新单词附加或插入到排序中列表?

例如: 定义查找插入位置: a_list = ['鸟','狗','鳄鱼'] new_animal = '牛'

在不改变列表的情况下,我如何确定新单词将在排序列表中插入的位置?因此,如果您输入新单词,列表将按字母顺序统计。请记住,这是一个给定的列表和单词,所以我不会事先知道任何单词。我正在使用 Python3。

【问题讨论】:

  • 您意识到在您的示例中没有任何地方可以插入“Cow”来使该列表按字母顺序排列,对吧?
  • @JonClements 这是一个家庭作业。我们将返回给定列表中给定名称的索引。如果单词不在列表中,我们必须在不改变其顺序的情况下确定单词的插入位置。我知道在 python 中我们可以对列表进行排序以使其按字母顺序排列,但如果不允许将单词添加到列表中,我不确定如何找到单词的位置。

标签: list python-3.x loops iteration


【解决方案1】:

如果在不改变原始列表的情况下将单词添加到另一个列表是可以接受的,那么你可以试试这个:

def find_insert_position(lst, word):
    new_lst = lst[:]    # make a copy of the list so you don't modify the original
    new_lst.append(word)    # add word to lst
    sorted_lst = sorted(new_lst) 
    return sorted_lst.index(word)    # return 0-based position of word in  sorted list

a_list = ['Bird', 'Dog', 'Alligator']
new_animal = 'Cow'

print(find_insert_position(a_list, new_animal))

【讨论】:

  • 我想过这样做,我的意思是它并没有说不做一个新的列表。哈哈。谢谢!!我不得不修改它以适应规范的所有可能条件,但它通过了测试。再次感谢!
【解决方案2】:

将变量计数器设置为 0 循环遍历单词列表中的每个项目,并将列表中的每个单词与给定列表进行比较 如果给定的单词大于列表中的项目,则增加计数器

因此,当您跳出循环时,计数器值就是您要查找的索引。

您可以将其转换为代码。

【讨论】:

  • 我认为我的一个同学试图解释这样做,但我一定做错了什么,因为我无法让它为我工作。
猜你喜欢
  • 2021-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-13
  • 1970-01-01
相关资源
最近更新 更多