0

可能重复:
如何在 Python 中将列表拆分为大小均匀的块?

基本上,我有一个列表,并且我正在遍历列表中的每个奇数索引。我想要做的是基于每个奇数索引的值,然后在所述奇数索引之后直接使用偶数索引中的值更新变量。

因此,如果lst[1]包含 value p,那么我希望 的值是xat 的值lst[2]: x = lst[2]

如果lst[3]包含该值m,那么我希望 y 为lst[4]: y = lst[4]

列表的长度从来都不是一成不变的,因为它是从文件中获取的。

我目前正在使用以下代码遍历列表:

for item in lst:
    if lst[range(1, len(lst), 2] == "p"
        x = ??

编辑:我想更具体地说,我创建了一个类,现在正在创建一个函数,该函数将从文件中获取信息,并使用它来填充我的类中的方法。为此,我正在使用文件读取文件readlines,然后根据文件中的内容浏览由创建的列表readlines并更新我的类中的方法。文件中的每一个奇数行都指示我需要使用紧随其后的行更新哪种方法。

所以:

if lst[1] == "p":
   s.methodOne(lst[2])
if lst[1] == "m":
    s.methodTwo(lst[2])

我只是不确定如何在奇数索引之后获取偶数索引中的内容。

我的代码可能不是很整洁,但这是我目前所拥有的:

def processScores(fname):
    infile = open(fname, 'r')
    lineinfo = infile.readlines()
    infile.close()
    lstinfo = []
    for item in lineinfo:
        lst = item.split(",")
        s = Score()
        s.initialize(lst[0])
        if lst[range(1, len(lst -1), 2] == "o" or "O":
4

2 回答 2

2
for idx in xrange(1, len(lst), 2):
    if lst[idx] == 'p':
        ...
    if lst[idx] == 'm':
        ...

请注意lstis的第一个元素lst[0],因此您在这里完全跳过它

于 2012-09-17T00:10:44.337 回答
0

我喜欢迭代工具:

from itertools import izip

def grouper(n, iterable):
    args = [iter(iterable)] * n
    return izip(*args)

line = 'hello, my name is really not pete.'
#              ^^                    ^^

for a, b in grouper(2, line[1:]):
    if a == 'm':
        print b
    elif a == 'p':
        print b

结果:

$ python oddeven.py
y
e
于 2012-09-17T02:03:39.650 回答