精华内容
下载资源
问答
  • python 如何访问列表中的相邻的两个元素(已验证)
    2022-03-31 11:02:29

    创建一个列表list = [1,2,3,4,5,6,7,8,9]

    方法一:一次性访问

    >>> list = [1,2,3,4,5,6,7,8,9]
    >>> for i in range(len(list) - 1):
    ...     print(list[i:i + 2])
    ...
    [1, 2]
    [2, 3]
    [3, 4]
    [4, 5]
    [5, 6]
    [6, 7]
    [7, 8]
    [8, 9]
    >>>

    方法二:单独访问

    >>> for i in range(len(list) - 1):
    ...     print(list[i])
    ...     print(list[i+1])
    ...
    1
    2
    2
    3
    3
    4
    4
    5
    5
    6
    6
    7
    7
    8
    8
    9
    >>>

    更多相关内容
  • 相邻数是数学名词,意思是在从小到大依次排列的自然数中,一个数前面和后面相互邻近的两个数就是该数的相邻数。下面这篇文章主要给大家介绍了利用python相邻数的方法示例,需要的朋友可以参考下。
  • 这更多是关于优雅和性能的问题,而不是“根本如何做”,因此我将仅显示代码:def iterate_adjacencies(gen, fill=0, size=2, do_fill_left=True,do_fill_right=False):""" Iterates over a 'window' of `size` ...

    这更多是关于优雅和性能的问题,而不是“根本如何做”,因此我将仅显示代码:

    def iterate_adjacencies(gen, fill=0, size=2, do_fill_left=True,

    do_fill_right=False):

    """ Iterates over a 'window' of `size` adjacent elements in the supploed

    `gen` generator, using `fill` to fill edge if `do_fill_left` is True

    (default), and fill the right edge (i.e. last element and `size-1` of

    `fill` elements as the last item) if `do_fill_right` is True. """

    fill_size = size - 1

    prev = [fill] * fill_size

    i = 1

    for item in gen: # iterate over the supplied `whatever`.

    if not do_fill_left and i < size:

    i += 1

    else:

    yield prev + [item]

    prev = prev[1:] + [item]

    if do_fill_right:

    for i in range(fill_size):

    yield prev + [fill]

    prev = prev[1:] + [fill]

    然后问:该功能已经存在吗?而且,如果没有,您能否以更好的方式(例如,更简洁和/或更快速)来做相同的事情?

    编辑:

    从@ agf,@ FogleBird,@ senderle的答案中得到的想法,最终的代码看起来很整洁:

    def window(seq, size=2, fill=0, fill_left=True, fill_right=False):

    """ Returns a sliding window (of width n) over data from the iterable:

    s -> (s0,s1,...s[n-1]), (s1,s2,...,sn), ...

    """

    ssize = size - 1

    it = chain(

    repeat(fill, ssize * fill_left),

    iter(seq),

    repeat(fill, ssize * fill_right))

    result = tuple(islice(it, size))

    if len(result) == size: # `<=` if okay to return seq if len(seq) < size

    yield result

    for elem in it:

    result = result[1:] + (elem,)

    yield result

    展开全文
  • 主要介绍了Python实现两个list对应元素相减操作,结合具体实例形式分析了list对应元素操作的简单实现技巧,需要的朋友可以参考下
  • 假设我们有一个数字nums的列表,可以说两个数字nums [i]≤nums [j]在没有数字的情况下是相邻的(nums [i],nums [j])。我们必须找到可能的最小值| j-i | 这样nums [j]和nums [i]是相邻...范例(Python)让我们看下面的...

    假设我们有一个数字nums的列表,可以说两个数字nums [i]≤nums [j]在没有数字的情况下是相邻的(nums [i],nums [j])。我们必须找到可能的最小值| j-i | 这样nums [j]和nums [i]是相邻的。

    因此,如果输入类似于nums = [1,-9,6,-6,2],则输出将为2,因为我们可以看到2和6相邻,并且它们彼此相距2个索引。

    范例(Python)

    让我们看下面的实现以更好地理解-

    from collections import defaultdict

    class Solution:

    def solve(self, A):

    indexes = defaultdict(list)

    for i, x in enumerate(A):

    indexes[x].append(i)

    ans = len(A)

    for row in indexes.values():

    for i in range(len(row) - 1):

    ans = min(ans, row[i + 1] - row[i])

    vals = sorted(indexes)

    for k in range(len(vals) - 1):

    r1 = indexes[vals[k]]

    r2 = indexes[vals[k + 1]]

    i = j = 0

    while i 

    ans = min(ans, abs(r1[i] - r2[j]))

    if r1[i] 

    i += 1

    else:

    j += 1

    return ans

    ob = Solution()

    nums = [1, -9, 6, -6, 2]

    print(ob.solve(nums))

    输入值

    [1, -9, 6, -6, 2]输出结果2

    展开全文
  • 今天小编就为大家分享一篇Python中交换两个元素的实现方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 现在遇到一个问题,['a', 'a', 'a', ' ', ' ', 'a', ' ', ' ', ' ' ],想变成['a', 'a'...]</p>
  • 今天小编就为大家分享一篇python中计算一个列表中连续相同的元素个数方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • 我有一个矩阵例如.[[4,5,0,0,0],[5,1,2,1,0],[0,2,3,2,0],[0,1,2,1,0],[0,0,0,0,0]]对于矩阵中的每个元素,我试图获取其相邻对角元素的总和及其相邻水平和垂直元素的总和.以矩阵中间的3为例,我试图计算对角相邻元素(1...

    我有一个矩阵

    例如.

    [[4,5,0,0,0],

    [5,1,2,1,0],

    [0,2,3,2,0],

    [0,1,2,1,0],

    [0,0,0,0,0]]

    对于矩阵中的每个元素,我试图获取其相邻对角元素的总和及其相邻水平和垂直元素的总和.

    以矩阵中间的3为例,我试图计算对角相邻元素(1)与水平和垂直相邻元素(2)的总和.

    对于拐角和边缘情况,我想忽略没有元素的区域,例如(对于左上角的4,我想获得对角线相邻的1的总和以及水平和垂直相邻的总和5的.

    在python中最有效的方法是什么?

    到目前为止,我已经提出了

    diagonals = lambda x,y:[(x-1, y-1), (x-1,y+1), (x+1,y-1), (x+1,y+1)]

    horiz_vert= lambda x,y:[(x,y+1), (x,y-1), (x+1,y), (x-1,y)]

    以获得索引,但是这些没有考虑边缘和拐角情况.

    解决方法:

    解决此任务的正确工具似乎是convolution.您只需定义将在每个位置应用的过滤器(“对角线邻居的总和”或“垂直/水平邻居的总和”)就可以了.

    import numpy as np

    import scipy.signal

    D = np.array([[4,5,0,0,0],

    [5,1,2,1,0],

    [0,2,3,2,0],

    [0,1,2,1,0],

    [0,0,0,0,0]])

    h_diag = np.array([[1,0,1], [0,0,0], [1,0,1]])

    h_hv = np.array([[0,1,0], [1,0,1], [0,1,0]])

    过滤器的外观如下:

    >>> h_diag

    array([[1, 0, 1],

    [0, 0, 0],

    [1, 0, 1]])

    >>> h_hv

    array([[0, 1, 0],

    [1, 0, 1],

    [0, 1, 0]])

    您可以将2D卷积视为在矩阵上移动滤波器并在每个位置计算逐元素相乘之和.严格来说,过滤器需要镜像,但是在您的情况下,它们还是对称的.这是网上的原理的随机说明:

    您的情况的唯一区别是我们希望将过滤器放置在任何地方,包括“边界”或“角”位置.这可以通过对原始矩阵D进行零填充来实现,从而可以将滤波器的中心放置在例如在位置(0,0).

    好消息!它已经在Numpy / Scipy中实现,并且是非常有效的实现!现在,您只需将D与滤波器h卷积即可构造矩阵.

    >>> scipy.signal.convolve2d(D, h_diag, mode='same')

    array([[1, 7, 2, 2, 1],

    [7, 7, 9, 3, 2],

    [2, 9, 4, 4, 2],

    [2, 3, 4, 3, 2],

    [1, 2, 2, 2, 1]])

    >>> scipy.signal.convolve2d(D, h_hv, mode='same')

    array([[10, 5, 7, 1, 0],

    [ 5, 14, 5, 4, 1],

    [ 7, 5, 8, 5, 2],

    [ 1, 4, 5, 4, 1],

    [ 0, 1, 2, 1, 0]])

    从这些矩阵中,您可以读取每个位置所需的总和.例如.原始矩阵D中的中心元素,即D [2,2]在对角线上被4包围,在水平/垂直邻接上被4包围.因此,卷积输出中在位置(2,2)上的条目是4和8.位置D [0,0]仅具有一个对角邻居(1)和两个水平/垂直邻居(5和5).卷积输出矩阵中的条目与预期的1和10.

    标签:matrix,python

    展开全文
  • 一、前言: 今天工作遇到一个问题,根据不同的柜子选取能连接在一起的所有柜子,有可能一...1、遍历列表,寻找每个元素与下一个元素之差绝对值为1的元素,例如:[2,1],[1,2,3] 2、寻找完毕后,发现如下结果:[[2, 1]
  • 我们必须找到最大的不相邻数字之和。因此,如果输入类似于nums = [10,3,4,8],那么输出将为14,因为我们可以取10和4。我们不能取10和8,因为它们是相邻的。为了解决这个问题,我们将遵循以下步骤-n:= nums的大小...
  • 相邻元素是不相邻元素中的一种特殊的存在,所以我们先来探讨不相邻的相同元素的删除。 不相邻元素的删除 结果:list=[1,2,3,4] #第一种 list = [1,2,3,3,4,1,1] new_list = [] for i in list[:]: if i not in new_...
  • python 怎么去除相邻连续的数字用列表解析,比如:b=[1001,1002,1003,1004,1005][x for x in b if b.index(x)%2 ==0] 就是你要的结果,实际就是取列表中奇数位的值请把下面代码转换为python语言的代码,功能为把数字...
  • python之列表剔除相邻重复项
  • python初级】计算列表中的相邻元素之差1、背景2、代码3、思路 1、背景 在分析数据的时候我拿到一列数据,想分析他们相邻值之间的差值,来寻找规律; 你可以直接通过excel的功能来实现,这里用程序来简单实现,纯属...
  • 本文实例讲述了Python简单计算数组元素平均值的方法。分享给大家供大家参考,具体如下: Python 环境:Python 2.7.12 x64 IDE : Wing IDE Professional 5.1.12-1 题目: 求数组元素的平均值 实现代码: # ...
  • python从列表中删除相邻重复元素

    千次阅读 2019-03-05 15:35:08
    该方法思路就是比较相邻两个值,若相同,则del其中一个,逐个遍历,直到没有重复的。 方法二:使用itertools库 import itertools list1 = [ '1' , '1' , '2' , '2' , '1' , '1' ] new_list1 = [ k ...
  • python 相邻

    2020-11-29 14:54:55
    什么是numpynumpy是一个在python中做科学计算的基础库,重在数值计算,也是大部分python科学计算库的基础库,多用于在大型,多维数组上执行数值运算。 学习numpy是后面学习pandas的重要基础。 numpy用np.array()的...
  • 假设我们有一个称为nums的数字列表,我们将定义一个函数,该函数返回最大的非相邻数字之和。这里的数字可以是0或负数。因此,如果输入类似于[3、5、7、3、6],那么输出将为16,因为我们可以分别用3、7和6来获得16。...
  • 主要介绍了Python selenium 父子、兄弟、相邻节点定位方式详解的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下
  • 面对大数组,大列表,项目中需要将其压缩,对于多维数组,可以通过降维方式,对于一维数组,想要压缩其中的元素量,可以通过求相邻元素的平均值来压缩数字列表的元素数,代码如下: #!/usr/bin/env python3 # -*- ...
  • 给定一个数组,求如果排序之后,相邻两数的最大差值,要求时间复杂度O(N),且要求不能用非基于比较的排序。 代码如下: class Solution: def maxGap(self, arr): if not arr or len(arr) < 2: return 0 ...
  • 问题:remove(元素名)使用循环删除多个重名的元素时,若两个本该删除的元素相邻,则会自动跳过第二个元素。 解决办法: ①while循环:删除元素1之后,下标不往后移 ②for循环:添加辅助列表 ③for循环:倒序删除 ④...
  • 如["北京","师范","大学"] 结果:["北京师范","师范大学","北京师范大学"] a = ["北京","师范","大学"] b=a.copy() for i in range(len(b)): ...除了这种方式以外,如果有多个列表呢 如何实现 请教各位 感谢
  • 描述 给你一个数组,其长度为 n ,在其中选出一个子序列,子序列中任意两个数不能有相邻的下标(子序列可以为空) 本题中子序列指在数组中任意挑选若干个数组成的数组。 ** 题解: ** 可以参考leetcode打家劫舍问题...
  • 方法1,对列表调用排序,从末尾依次比较相邻两个元素,遇重复元素则删除,否则指针左移一位重复上述过程: def deleteDuplicatedElementFromList(list): list.sort(); print(sorted list:%s % list) length = ...
  • | 删除字符串中的所有相邻的重复项 给出由小写字母组成的字符串 S,重复项删除操作会选择两个相邻且相同的字母,并删除它们。 在 S 上反复执行重复项删除操作,直到无法继续删除。 在完成所有重复项删除操作后...
  • Python列表元素分组

    千次阅读 2020-12-10 14:03:57
    知乎上有人问 Python中的列表按相同元素分割?比如列表[0,0,0,1,1,2,3,3,3,2,3,3,0,0]分割成[0,0,0],[1,1],[2],[3,3,3],[2],[3,3],[0,0]如何解决这样的问题呢?1、首先说明,如果这样的题目都不能写出代码,原因在...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 25,552
精华内容 10,220
关键字:

python元素相邻