如何找到python列表的中间位置?
aList = [1,2,3,4,5]
middle = findMiddle(aList)
print middle
这只是一个函数的例子,它可以找到任何列表的中间,你可以用列表理解来做这件事吗?
编辑:这与去掉中间点不同,因为我只想打印出中间值,如果列表是奇数,我想返回两个中间值,就像接受的答案一样。没有像另一个问题那样得到中值,而是得到两个值的平均值。
取列表的长度,将其减半,然后在该索引点访问列表中的任何内容。
为什么要使用列表理解?列表理解一次只知道列表的任何一个成员,所以这将是一个奇怪的方法。相反:
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]来获得实际的单个值(而不是包含单个值的数组),但是如果它可以是或将是一个偶数长度的列表,并且您想要返回一个包含两个中间值的数组或一个单个值的数组,请保持原样。:)
像这样的东西会做:
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] 我需要做的是找到所有列表中常见的间隔列表。 我认为这个问题类似于合并列表。问题是我无法应用列表的成对合并。应用此方法可能会导致丢失重叠间隔。因此,我需要将所有列表合并在一起,一次考虑所有列表(而不是成对)。 我可以使用间隔树。将每个列表中的第一个间隔插入间隔树并