相关疑难解决方法(0)

如何在循环时访问上一个/下一个元素?

有没有办法在循环使用for循环时访问列表(或元组,或其他可迭代)的下一个或前一个元素?

l=[1,2,3]
for item in l:
    if item==2:
        get_previous(l,item)
Run Code Online (Sandbox Code Playgroud)

python

43
推荐指数
7
解决办法
7万
查看次数

在JavaScript中将数组迭代为一对(当前,下一个)

Python中将列表迭代为对(当前,下一个)的问题中,OP有兴趣将Python列表迭代为一系列current, next对.我有同样的问题,但我想用最干净的方式在JavaScript中完成,也许使用lodash.

使用简单的for循环很容易做到这一点,但它感觉不是很优雅.

for (var i = 0; i < arr.length - 1; i++) {
  var currentElement = arr[i];
  var nextElement = arr[i + 1];
}
Run Code Online (Sandbox Code Playgroud)

Lodash几乎可以做到这一点:

_.forEach(_.zip(arr, _.rest(arr)), function(tuple) {
  var currentElement = tuple[0];
  var nextElement = tuple[1];
})
Run Code Online (Sandbox Code Playgroud)

在最后一次迭代中,这nextElement将是一个微妙的问题undefined.

当然,理想的解决方案只是一个pairwise只在必要时循环的lodash功能.

_.pairwise(arr, function(current, next) {
  // do stuff 
});
Run Code Online (Sandbox Code Playgroud)

是否有任何现有的库已经这样做了?或者是否有另一种很好的方法在JavaScript中进行成对迭代我还没有尝试过?


澄清:如果arr = [1, 2, 3, 4],那么我的pairwise函数将迭代如下:[1, 2], …

javascript iteration lodash

14
推荐指数
5
解决办法
8648
查看次数

Python循环:列表索引超出范围

鉴于以下列表

a = [0, 1, 2, 3]
Run Code Online (Sandbox Code Playgroud)

我想创建一个新列表b,其中包含对当前值和下一个值a求和的元素.它将包含少于1的元素a.

像这样:

b = [1, 3, 5]
Run Code Online (Sandbox Code Playgroud)

(从0 + 1,1 + 2和2 + 3)

这是我尝试过的:

b = []
for i in a:
   b.append(a[i + 1] - a[i])
b
Run Code Online (Sandbox Code Playgroud)

问题是我一直收到这个错误:

IndexError: list index out of range
Run Code Online (Sandbox Code Playgroud)

我很确定它会发生,因为当我得到(3)的最后一个元素时,我无法将它添加到任何东西,因为这样做超出了它的值(3之后没有值添加).因此,我需要告诉代码停止在2,同时仍然参考3进行计算.

python loops list python-3.x

10
推荐指数
2
解决办法
10万
查看次数

如何按条件简化词典列表?

我有日期对象的字典列表:

{ "begin" :date object1, "end" : date object2 }
....
{ "begin" :date object3, "end" : date object4 }
Run Code Online (Sandbox Code Playgroud)

我希望按条件简化此列表:

if cur.end == next.begin - datetime.timedelta(seconds=1))
    cur.end = next.end
    delete next
Run Code Online (Sandbox Code Playgroud)

怎么做 ?

python dictionary list

7
推荐指数
1
解决办法
104
查看次数

在Python迭代期间打印当前值和下一个值

可能重复: 在Python中将列表成对循环(当前,下一个)

遍历列表时,我要打印列表中的当前项目以及列表中的下一个值。

listOfStuff = [a,b,c,d,e]
for item in listOfStuff:
    print item, <nextItem>
Run Code Online (Sandbox Code Playgroud)

输出为:

a b
b c
c d
d e
Run Code Online (Sandbox Code Playgroud)

python iteration

5
推荐指数
1
解决办法
2448
查看次数

在任意索引处有效地分区字符串

给定一个任意字符串(即,不基于模式),请说:

>>> string.ascii_letters
'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
Run Code Online (Sandbox Code Playgroud)

我试图基于索引列表分区字符串.

这是我尝试过的,它确实有效:

import string

def split_at_idx(txt, idx):
    new_li=[None]*2*len(idx)
    new_li[0::2]=idx
    new_li[1::2]=[e for e in idx]
    new_li=[0]+new_li+[len(txt)]
    new_li=[new_li[i:i+2] for i in range(0,len(new_li),2)]  
    print(new_li)
    return [txt[st:end] for st, end in new_li]

print(split_at_idx(string.ascii_letters, [3,10,12,40]))  
# ['abc', 'defghij', 'kl', 'mnopqrstuvwxyzABCDEFGHIJKLMN', 'OPQRSTUVWXYZ']
Run Code Online (Sandbox Code Playgroud)

拆分基于索引列表[3,10,12,40].然后需要将此列表转换为开始,结束对的列表[[0, 3], [3, 10], [10, 12], [12, 40], [40, 52]].我使用切片分配来设置平均值和赔率,然后将列表理解分组成对,并使用第二个LC来返回分区.

对于这样一个简单的函数来说,这似乎有点复杂.有没有更好/更有效/更惯用的方式来做到这一点?

python string idioms python-3.x

5
推荐指数
1
解决办法
96
查看次数

在Python中访问列表的两个连续元素

我需要访问nn+1一个列表的元素.例如,如果我的列表是[1,2,3,4,5]和我的第n个元素2,我需要列表中的下一个元素,3.

具体来说,我需要访问这些元素,以便使用它们在矩阵A中查找值

我有一个迭代遍历列表的for循环:

list = [1,2,3,4,5]

for i in list:
  value = A[i,i+1] #access A[1,2], A[2,3], A[3,4], A[4,5]
Run Code Online (Sandbox Code Playgroud)

这个问题是我无法进行i+1操作来访问n+1列表中的元素.这是我第一次用Python编程,我假设元素访问与C/C++中的相同,但事实并非如此.任何帮助,将不胜感激.

python iteration list

4
推荐指数
1
解决办法
8593
查看次数

Python中的键,字典中的值

到目前为止,这是我的代码:

for keys, values in CountWords.items():
    val = values
    print("%s: %s \t %s: %s" % (keys, val, keys, val))
Run Code Online (Sandbox Code Playgroud)

当它被打印时,它将输出该键及其值,然后在空格后输出相同的内容.我想知道的是,如果我能得到第二个%s:%s来从字典中选择下一个键和值.

python iteration dictionary key-value

4
推荐指数
2
解决办法
2万
查看次数

比较列表中所有相邻元素的Pythonic方法

我想知道是否有更多的Pythonic方法来执行以下操作:

A = some list
i = 0
j = 1
for _ in range(1, len(A)):
    #some operation between A[i] and A[j]
    i += 1
    j += 1
Run Code Online (Sandbox Code Playgroud)

我觉得这应该/可以做得不同.想法?

编辑:因为有些人要求要求.我想要一个通用的答案.也许检查A [i],A [j]是否在某个范围之间,或者它们是否相等.或许我想做一个"涓涓细流"的元素.越普遍越好.

python python-3.x

4
推荐指数
2
解决办法
3756
查看次数

如何将字符串与列表中的下一个字符串进行比较?

我正在编写一个小型NLP算法,我需要执行以下操作:

对于列表中的每个字符串x ["this", "this", "and", "that"],如果字符串x和下一个字符串相同,我想打印字符串.

python string compare list next

2
推荐指数
2
解决办法
2万
查看次数