0

重複の可能性:
Pythonでリストを均等なサイズのチャンクに分割するにはどうすればよいですか?

基本的に、私はリストを持っており、リスト内の奇数番号のインデックスをすべて繰り返し処理しています。私がやりたいのは、各奇数番号のインデックスの値に基づいて、その奇数番号のインデックスの直後の偶数番号のインデックスの値で変数を更新することです。

したがって、lst[1]に値が含まれている場合は、の値をの値pxlst[2]: x = lst[2]ます。

lst[3]が含まれている場合は、 myを次の値にします。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':
        ...

の最初の要素lstlst[0]であるため、ここでは完全にスキップしていることに注意してください

于 2012-09-17T00:10:44.337 に答える
0

itertoolsが好きです:

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 に答える