0

次のようなリストがあります。

[[846033, 365, 202], [849432, 276, 140], [821121, 209, 111], [820180, 244, 133], [849401, 971, 572], [848613, 790, 596], [846978, 914, 272]]

小さなリストの最初の要素は「idnumber」で、他の 2 つの要素は比較したいデータです。

私がやりたいことはこれです: 2 つのデータ番号の少なくとも 1 つが 250 未満である大きなリストの要素を削除したいです。答えは次のようになります。

[[849401, 971, 572], [848613, 790, 596], [846978, 914, 272]].

for ループ内に for ループを作成しようとしましたが、失敗しました:

def zonderRuis(sigIdSpot=[[846033, 365, 202], [849432, 276, 140], [821121, 209, 111], [820180, 244, 133], [849401, 971, 572], [848613, 790, 596], [846978, 914, 272]]):
    ruisvrij=[]
    for i in range(len(sigIdSpot)):
        for r in i:
            if r[2]>=250 and r[3]>=250:
                ruisvrij.append(r)
    return ruisvrij
4

4 に答える 4

8
[x for x in data if all(y >= 250 for y in x[1:])]
于 2013-03-26T14:17:27.593 に答える
1

反復についてのポイント:

for i in range(len(sigIdSpot)):
    x = sigIdSpot[i]
    print x

# becomes more clear if you do the following:
for x in sigIdSpot:
    print x

コードをデバッグしたい場合は、いくつかの印刷物を置いて、コードで何が起こっているかを確認できます。

def zonderRuis(sigIdSpot=[[846033, 365, 202], [849432, 276, 140], [821121, 209, 111], [820180, 244, 133], [849401, 971, 572], [848613, 790, 596], [846978, 914, 272]]):
    ruisvrij=[]
    for i in range(len(sigIdSpot)):
        print 'i is:', i
        for r in i:
            print 'r is:', r
            if r[2]>=250 and r[3]>=250:
                ruisvrij.append(r)
                print 'r appended to ruisvrij:', ruisvrij
    return ruisvrij

インタラクティブ シェルは私たちの親友です。

于 2013-03-26T15:24:45.420 に答える
0
In [15]: l = [[846033, 365, 202], [849432, 276, 140], [821121, 209, 111], [820180, 244, 133], [849401, 971, 572], [848613, 790, 596], [846978, 914, 272]]

In [16]: [sub for sub in l if min(sub[1:]) >= 250]
Out[16]: [[849401, 971, 572], [848613, 790, 596], [846978, 914, 272]]
于 2013-03-26T14:18:23.687 に答える
0
list1 =  [[846033, 365, 202], [849432, 276, 140], [821121, 209, 111], [820180, 244, 133], [849401, 971, 572], [848613, 790, 596], [846978, 914, 272]]
list2 = []
for x in list1:
    if x[1] > 250 and x[2] > 250:
        lijst1.append(x)
于 2013-03-26T14:22:28.413 に答える