5

次のような 2 つのリストがあります。after = xyz と .81 から値を抽出する必要があります。私は、両方のリストに対して1つの一般的な解決策を作成しようとしています。また、将来のためにも作成します。今のところ、分割よりもリストの結合と検索を行っていました。しかし、私はそれがより良い方法で行うことができると感じています.

a = ['.TITLE', "'=", 'xyz', 'vdd', '=', '0.81', 'temp', "-40'"]
b = ['.TITLE', "'$", 'abc', '=', 'xyz', 'vdd', '=', '0.99', 'temp', "125'"]
4

3 に答える 3

6

next()ジェネレーターで使用できます:

a = ['.TITLE', "'=", 'xyz', 'vdd', '=', '0.81', 'temp', "-40'"]
a1 = iter(a)
for item in a1:
    if '=' in item:
        print next(a1)

版画:

xyz
0.81

=が最後の項目である場合、StopIterationエラーが発生することに注意してください。


次を使用することもできますenumerate()

a = ['.TITLE', "'=", 'xyz', 'vdd', '=', '0.81', 'temp', "-40'"]
for i, j in enumerate(a):
    if '=' in j:
        print a[i+1]

版画:

xyz
0.81

が最後の項目である場合、これもエラー ( IndexError)を発生させます。=

于 2013-10-21T11:26:53.203 に答える
0

非エレガントな方法は、 flags を使用することです:

a = ['.TITLE', "=", 'xyz', 'vdd', '=', '0.81', 'temp', "-40'"]
b = ['.TITLE', "'$", 'abc', '=', 'xyz', 'vdd', '=', '0.99', 'temp', "125'"]

def extract(L,sep="="):
    pick_this_one = False
    for item in L :
        if pick_this_one:
            pick_this_one = False
            yield item
        if item == sep :
            pick_this_one = True

for value in extract(a+b):
    print value

>>> xyz
0.81
xyz
0.99
>>> 
于 2013-10-21T11:52:38.460 に答える