我想循环检查每个项目的列表与其后面的项目.
有没有办法可以循环使用除了最后一项使用x中的所有项目?如果可以的话,我宁愿不使用索引.
注意
freespace回答了我的实际问题,这就是我接受答案的原因,但是SilentGhost回答了我应该问的问题.
为混乱道歉.
我有时需要在Python中迭代一个列表,查看"current"元素和"next"元素.到目前为止,我已经完成了以下代码:
for current, next in zip(the_list, the_list[1:]):
# Do something
Run Code Online (Sandbox Code Playgroud)
这有效并且符合我的预期,但是有更多惯用或有效的方法来做同样的事情吗?
假设我们有一个清单L = [1,2,3,4,5].是否有一种干净的方法来制作以下形式的元组列表:T = [(1,2),(2,3),(3,4),(4,5)]?
如果有更好的替代方案,那就太好了
T = []
for i in range(len(L) - 1):
T.append((L[i], L[i+1]))
Run Code Online (Sandbox Code Playgroud)
或者等同的理解.
我正在尝试按列表中给出的位置拆分字符串,并将这些部分添加到新列表中.我开始:
seq = 'ATCGATCGATCG'
seq_new = []
seq_cut = [2, 8 , 10]
Run Code Online (Sandbox Code Playgroud)
我想得到:
seq_new = ['AT', 'CGATCG', 'AT', 'CG']
Run Code Online (Sandbox Code Playgroud)
具有位置的列表的大小和值可变.我该如何处理这样的数据?
假设我有以下向量:
v1 = c(1,2,3,4)
我需要以成对的方式迭代这个向量,比如(1,2), (2,3), (3,4). 对于python,这里有一个解决这个问题的方法:迭代列表中所有连续的项目对。在 R 中可以实现类似的解决方案吗?
所以我有一个问题,我有一个iterable(字符串或列表在这里)喜欢string = "ABCDEFG",我想输出类似的东西
A-B
B-C
C-D
...
F-G
Run Code Online (Sandbox Code Playgroud)
所以我知道这有效(忘了处理indexError,但无论如何),但它很难看......
for i in range(len(myString)):
element1 = myString[i]
element2 = myString[i+1]
print("theshit")
Run Code Online (Sandbox Code Playgroud)
有没有办法以更优雅/ pythonic的方式做到这一点?我认为itertools可以是一个解决方案,但我不知道它是如何工作的..
顺便说一句,我myString只需要这个循环所以也许生成器(不知道如何使用它,我还在学习)
谢谢 :)
该itertools Python模块实现了迭代器的一些基本构建块.正如他们所说,"它们构成了迭代器代数".我期待,但我找不到使用该模块进行以下迭代的简洁方法.例如,给出有序实数列表
a = [1.0,1.5,2.0,2.5,3.0]
Run Code Online (Sandbox Code Playgroud)
...返回一个新的列表(或只是迭代)按一些n值分组,比方说2
b = [(1.0,1.5),(1.5,2.0),(2.0,2.5),(2.5,3.0)]
Run Code Online (Sandbox Code Playgroud)
我发现这样做的方式如下.首先将列表分为两部分,使用均衡和赔率索引:
even, odds = a[::2], a[1::2]
Run Code Online (Sandbox Code Playgroud)
然后构造新的列表:
b = [(even, odd) for even, odd in zip(evens, odds)]
b = sorted(b + [(odd, even) for even, odd in zip(evens[1:], odds)])
Run Code Online (Sandbox Code Playgroud)
从本质上讲,它类似于移动平均值.
有没有简洁的方法(有或没有itertools)?
PS:
应用
将a列表想象为实验期间发生的一些事件的时间戳集:
timestamp event
47.8 1a
60.5 1b
67.4 2a
74.5 2b
78.5 1a
82.2 1b
89.5 2a
95.3 2b
101.7 1a
110.2 1b
121.9 2a
127.1 2b
...
Run Code Online (Sandbox Code Playgroud)
此代码用于根据不同的时间窗口对这些事件进行分段.现在我对2连续事件之间的数据感兴趣; 'n> …