当前位置: 首页 > 知识库问答 >
问题:

在列表中间查找

裘安阳
2023-03-14

如何找到python列表的中间位置?

aList = [1,2,3,4,5]
middle = findMiddle(aList)
print middle

这只是一个函数的例子,它可以找到任何列表的中间,你可以用列表理解来做这件事吗?

编辑:这与去掉中间点不同,因为我只想打印出中间值,如果列表是奇数,我想返回两个中间值,就像接受的答案一样。没有像另一个问题那样得到中值,而是得到两个值的平均值。

共有3个答案

文志学
2023-03-14

取列表的长度,将其减半,然后在该索引点访问列表中的任何内容。

曾嘉言
2023-03-14

为什么要使用列表理解?列表理解一次只知道列表的任何一个成员,所以这将是一个奇怪的方法。相反:

def findMiddle(input_list):
    middle = float(len(input_list))/2
    if middle % 2 != 0:
        return input_list[int(middle - .5)]
    else:
        return (input_list[int(middle)], input_list[int(middle-1)])

如果是奇数列表,则应返回列表中的中间项,如果是偶数有序列表,则应返回包含中间两项的元组。

编辑:

只是为了好玩,想一想如何通过列表理解来做到这一点。想到了这个:

[lis[i] for i in 
    range((len(lis)/2) - (1 if float(len(lis)) % 2 == 0 else 0), len(lis)/2+1)]

读作:

"返回一个包含数组< code>lis的第< code>i位的数组,其中I是一个范围的成员,该范围从< code>lis的长度除以2开始,如果列表的长度是偶数,则从中减去1,如果列表的长度是奇数,则减去0 ,最后到< code > lis的长度除以2,再加上1结束。"

范围的开始/结束对应于我们想要从 lis 中提取的索引,请记住哪些参数是 python 中 range() 函数的包容性/排他性参数。

如果您知道它每次都将是一个奇数长度的列表,那么您可以在末尾添加一个< code>[0]来获得实际的单个值(而不是包含单个值的数组),但是如果它可以是或将是一个偶数长度的列表,并且您想要返回一个包含两个中间值的数组或一个单个值的数组,请保持原样。:)

勾裕
2023-03-14

像这样的东西会做:

aList = [1,2,3,4,5]
#minus 1 because the first element is index 0
middleIndex = (len(aList) - 1)/2
print middleIndex
print aList[middleIndex]
 类似资料:
  • 我正在使用MongoDB搜索包含列表列表的元素,其中列表中至少有一个项目与搜索参数匹配。 这是我目前拥有的结构的一个例子。 我想搜索数据列表中值为“绿色”的所有项目。 我目前有这个: 但是,不会返回任何结果。

  • 我有超过15个字符串列表,每个列表包含几个不同的代码。每个列表包含一种特定类型的代码。我有一个输入代码,必须找出该输入代码属于哪个列表,并根据结果返回一个特定字符串。我用if,else if来做这个。下面是示例代码 每个列表如下所示:公共静态列表codeTypeOneList=新ArrayList(); (其他代码类型的类似列表) 有没有更好的方法来实现这一点?谢谢

  • 问题内容: 关于你的第一个问题:该代码非常好,并且如果与其中的一个元素相等就可以正常工作。也许你尝试查找与其中一项不完全匹配的字符串,或者你使用的浮点值会导致不准确。 关于第二个问题:如果“查找”列表中的内容,实际上有几种可能的方法。 检查里面是否有东西 这是你描述的用例:检查列表中是否包含某些内容。如你所知,你可以使用in运算符: 过滤集合 即,找到满足特定条件的序列中的所有元素。你可以为此使用

  • 假设我有一个这样的范围列表 现在我想找到一个范围,比如。我的算法应该给我这个范围的所有范围。例如,这个的输出应该是 <代码>输出-[1,3]、[2,5]、[4,6]、[8,10] 我该如何着手解决这个问题? PS:我知道段树可能会有所帮助。我可以在其中构建树来存储间隔并查询位于间隔内的Point,但如何在给定间隔的情况下获取所有间隔。

  • 我有一个有点奇怪的问题。 我有一个“word”对象列表。“word”对象包含一个字符串myCWord,它等于传入word的字符串的规范版本。 规范形式是字符串中的排序字符。 现在我有了一个单词列表,在这里我可以访问它们所包含的字符串的规范版本。 我需要一个算法来创建“子列表”,这些列表包含一组单词,这些单词是每个单词的字谜。

  • 这与寻找重叠的间隔有关。给定一个间隔列表(间隔树),我知道如何做到这一点。我有一个间隔列表。例如, 结果应该是 [2,3], [7,8] 我需要做的是找到所有列表中常见的间隔列表。 我认为这个问题类似于合并列表。问题是我无法应用列表的成对合并。应用此方法可能会导致丢失重叠间隔。因此,我需要将所有列表合并在一起,一次考虑所有列表(而不是成对)。 我可以使用间隔树。将每个列表中的第一个间隔插入间隔树并