`
monkeyc
  • 浏览: 13088 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

python选取数组中任意位置的相邻元素

阅读更多

比方说有一个排行榜(假设小于1000),需要选取出某个用户的相邻排名前两名和后两名;如果该用户本身没有前两名则在后两名中补齐(比如用户如果是第一名那么去2,3,4,5名),反之同理,用python实现。

 

代码如下,感觉挺笨,不过达到了效果:

假设一共0~14 15个数,输入任意0~14的数以及scope(如果显示前后两名则写4,奇数情况暂没考虑)

 

Pasting code; enter '--' alone on the line to stop.
:    def t(selfid, scope):
:        arr = range(15)
:        l = len(arr)
:        ind = arr.index(selfid)
:        
:        start = ind - scope/2
:        end = ind + scope/2
:        if start <= 0:
:            end = end - start
:            start = 0
:        elif end >= l:
:            start = start - (end - l) - 1
:            end = l
:        
:        res = arr[start:end + 1]
:        res.remove(selfid)
:        return res
:--

 测试代码如下:

for i in range(15):
    print i, t(i, 4), i in t(i,4)
    print '--------------------------'
   ....:     
   ....:     
0 [1, 2, 3, 4] False
--------------------------
1 [0, 2, 3, 4] False
--------------------------
2 [0, 1, 3, 4] False
--------------------------
3 [1, 2, 4, 5] False
--------------------------
4 [2, 3, 5, 6] False
--------------------------
5 [3, 4, 6, 7] False
--------------------------
6 [4, 5, 7, 8] False
--------------------------
7 [5, 6, 8, 9] False
--------------------------
8 [6, 7, 9, 10] False
--------------------------
9 [7, 8, 10, 11] False
--------------------------
10 [8, 9, 11, 12] False
--------------------------
11 [9, 10, 12, 13] False
--------------------------
12 [10, 11, 13, 14] False
--------------------------
13 [10, 11, 12, 14] False
--------------------------
14 [10, 11, 12, 13] False
--------------------------

 

欢迎拍砖,chop地址:http://chopapp.com/#s5jknzbm

0
0
分享到:
评论

相关推荐

    Python 算法集.zip

    - 冒泡排序:通过重复遍历数组,比较相邻元素并交换顺序,使较大元素逐渐"冒泡"到数组末尾。 - 快速排序:采用分治策略,选取一个基准元素,将数组分为两部分,小于基准的放左边,大于基准的放右边,然后对左右两...

    学习python数据结构和算法.zip

    - 快速排序:基于分治策略,选取一个基准元素,将数组分为两部分,一部分小于基准,另一部分大于基准,然后递归处理两部分。 - 归并排序:也是分治策略,将数组分成两半,分别排序后再合并。 2. **查找算法**: ...

    算法之美python语言实现实验代码.zip

    - 冒泡排序:这是一种简单的排序算法,通过反复遍历待排序的列表,依次比较相邻元素并交换位置,直到没有任何一对元素需要交换。 - 选择排序:每次从未排序的部分找到最小(或最大)的元素,放到已排序部分的末尾...

    Python-Algorithms:Python 3中算法的实现

    - **冒泡排序**:这是一种简单的排序算法,通过重复遍历数组,比较相邻元素并交换位置来完成排序。 - **选择排序**:它每次从未排序的元素中找到最小(或最大)的一个元素,存放到排序序列的起始位置。 - **插入...

    py-algorithms:一些用 Python 实现的流行算法

    - **冒泡排序**:这是一种基础的排序算法,通过不断交换相邻的逆序元素来逐渐排序整个序列。 - **选择排序**:每次选择未排序部分的最小(或最大)元素放到已排序部分的末尾。 - **插入排序**:将未排序的元素...

    数据结构算法实现:初始提交

    - 冒泡排序:通过重复遍历数组,交换相邻位置的元素,直到排序完成。 - 插入排序:将未排序元素逐个插入到已排序部分,保持有序。 - 选择排序:每次找到未排序部分的最小(大)元素,放到已排序部分的末尾。 - 快速...

    Data-Algorithms-in-Python-101

    在Python编程语言中,数据算法是处理和操作数据的核心技术,它们可以帮助我们高效地解决各种问题,从排序和搜索到图论和机器学习。在这个"Data-Algorithms-in-Python-101"项目中,我们可以期待学习到一系列基础到...

    合并链表_合并链表_

    链表是一种线性数据结构,与数组不同,链表的元素并不在内存中连续存储。每个元素称为节点,包含数据和指向下一个节点的引用。链表有头节点和尾节点,其中头节点指向链表的第一个元素,而尾节点的next引用为null。 ...

    Data-Structures-and-Algorithms

    - 快速排序:利用分治策略,选取一个基准值,将数组分为两部分,一部分所有元素小于基准,另一部分所有元素大于基准,然后递归排序这两部分。 - 归并排序:同样采用分治策略,将数组拆分为两半,分别排序后合并。 ...

    2021-2022计算机二级等级考试试题及答案No.3855.docx

    然而,链表的一个缺点是无法像数组那样通过索引随机访问任意元素。 **结论:** 正确答案是B:“可随机访问任一元素”。 ### 21. break、continue与return语句 **知识点描述:** 在编程语言中break、continue与...

    随机游走算法

    这可以通过Python的random模块来实现,如`random.choice()`函数,它可以从给定的序列中随机选取一个元素。 4. **更新位置**:将行走者的当前位置更新为所选的下一个节点。 5. **设定终止条件**:随机游走需要一个...

Global site tag (gtag.js) - Google Analytics