-
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求相邻数的方法示例
2020-09-21 05:16:25相邻数是数学名词,意思是在从小到大依次排列的自然数中,一个数前面和后面相互邻近的两个数就是该数的相邻数。下面这篇文章主要给大家介绍了利用python求相邻数的方法示例,需要的朋友可以参考下。 -
遍历Python中相邻元素的“窗口”
2021-01-29 09:27:46这更多是关于优雅和性能的问题,而不是“根本如何做”,因此我将仅显示代码: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对应元素相减操作示例
2020-09-21 07:39:12主要介绍了Python实现两个list对应元素相减操作,结合具体实例形式分析了list对应元素操作的简单实现技巧,需要的朋友可以参考下 -
程序以查找Python中相邻元素的索引的最小可能差
2021-03-17 22:58:09假设我们有一个数字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中交换两个元素的实现方法
2020-09-20 07:45:17今天小编就为大家分享一篇Python中交换两个元素的实现方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 -
python 合并list中相邻的元素成一个元素
2021-03-21 22:07:57现在遇到一个问题,['a', 'a', 'a', ' ', ' ', 'a', ' ', ' ', ' ' ],想变成['a', 'a'...]</p> -
python中计算一个列表中连续相同的元素个数方法
2020-09-20 07:48:53今天小编就为大家分享一篇python中计算一个列表中连续相同的元素个数方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧 -
python-获取矩阵的相邻元素的总和
2020-12-08 03:54:31我有一个矩阵例如.[[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
-
利用python寻找列表中相邻元素之差绝对值为1的所有最长链
2022-03-23 13:20:31一、前言: 今天工作遇到一个问题,根据不同的柜子选取能连接在一起的所有柜子,有可能一...1、遍历列表,寻找每个元素与下一个元素之差绝对值为1的元素,例如:[2,1],[1,2,3] 2、寻找完毕后,发现如下结果:[[2, 1] -
程序在python的循环列表中查找不相邻元素的总和
2021-01-12 03:28:18我们必须找到最大的不相邻数字之和。因此,如果输入类似于nums = [10,3,4,8],那么输出将为14,因为我们可以取10和4。我们不能取10和8,因为它们是相邻的。为了解决这个问题,我们将遵循以下步骤-n:= nums的大小... -
Python从列表中删除相邻和不相邻的相同元素
2021-01-13 17:10:01相邻元素是不相邻元素中的一种特殊的存在,所以我们先来探讨不相邻的相同元素的删除。 不相邻元素的删除 结果: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 怎么去除相邻连续的数字)
2020-12-19 21:18:26python 怎么去除相邻连续的数字用列表解析,比如:b=[1001,1002,1003,1004,1005][x for x in b if b.index(x)%2 ==0] 就是你要的结果,实际就是取列表中奇数位的值请把下面代码转换为python语言的代码,功能为把数字... -
python之list元素处理(相邻元素若相同只保留一个)
2022-04-07 17:48:33python之列表剔除相邻重复项 -
【python初级】计算列表中的相邻元素之差
2021-07-06 23:14:14【python初级】计算列表中的相邻元素之差1、背景2、代码3、思路 1、背景 在分析数据的时候我拿到一列数据,想分析他们相邻值之间的差值,来寻找规律; 你可以直接通过excel的功能来实现,这里用程序来简单实现,纯属... -
Python简单计算数组元素平均值的方法示例
2020-12-24 08:38:49本文实例讲述了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()的... -
该程序在Python中查找列表中最大的不相邻元素之和
2021-01-12 03:28:16假设我们有一个称为nums的数字列表,我们将定义一个函数,该函数返回最大的非相邻数字之和。这里的数字可以是0或负数。因此,如果输入类似于[3、5、7、3、6],那么输出将为16,因为我们可以分别用3、7和6来获得16。... -
Python selenium 父子、兄弟、相邻节点定位方式详解
2020-09-21 13:16:18主要介绍了Python selenium 父子、兄弟、相邻节点定位方式详解的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下 -
Python3:通过求相邻元素的平均值来压缩数字列表的元素数
2020-02-24 18:38:32面对大数组,大列表,项目中需要将其压缩,对于多维数组,可以通过降维方式,对于一维数组,想要压缩其中的元素量,可以通过求相邻元素的平均值来压缩数字列表的元素数,代码如下: #!/usr/bin/env python3 # -*- ... -
python 相邻两数的最大差值
2021-10-05 22:51:26给定一个数组,求如果排序之后,相邻两数的最大差值,要求时间复杂度O(N),且要求不能用非基于比较的排序。 代码如下: class Solution: def maxGap(self, arr): if not arr or len(arr) < 2: return 0 ... -
Python列表remove()删除相邻的重复元素会漏删一个解决办法
2021-12-15 17:23:05问题:remove(元素名)使用循环删除多个重名的元素时,若两个本该删除的元素相邻,则会自动跳过第二个元素。 解决办法: ①while循环:删除元素1之后,下标不往后移 ②for循环:添加辅助列表 ③for循环:倒序删除 ④... -
用python实现单个列表中相邻元素的合并,列表中的最后一个元素为所有元素的组合
2019-04-23 21:47:23如["北京","师范","大学"] 结果:["北京师范","师范大学","北京师范大学"] a = ["北京","师范","大学"] b=a.copy() for i in range(len(b)): ...除了这种方式以外,如果有多个列表呢 如何实现 请教各位 感谢 -
python动态规划求解不相邻最大子序列和
2022-01-04 21:37:35描述 给你一个数组,其长度为 n ,在其中选出一个子序列,子序列中任意两个数不能有相邻的下标(子序列可以为空) 本题中子序列指在数组中任意挑选若干个数组成的数组。 ** 题解: ** 可以参考leetcode打家劫舍问题... -
Python实现列表删除重复元素的三种常用方法分析
2021-01-20 04:19:23方法1,对列表调用排序,从末尾依次比较相邻两个元素,遇重复元素则删除,否则指针左移一位重复上述过程: def deleteDuplicatedElementFromList(list): list.sort(); print(sorted list:%s % list) length = ... -
python 删除字符串中的所有相邻的重复项
2021-12-07 22:13:37| 删除字符串中的所有相邻的重复项 给出由小写字母组成的字符串 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、首先说明,如果这样的题目都不能写出代码,原因在...