0

2D リストをループしようとしていますが、要因に応じて、行に追加するか、行全体を削除します

tempX特定の値に一致する場合、リストの現在の行に追加する必要がありますtempX。その値と一致しないtempY場合は、行全体をリストから削除する必要があります。tempX

これがこれまでのコードです。

aList = [[1,2,3,4,5],[6,7,8,9,10],[11,12,13,14,15]]

i = 0

for a, b, c, d, e in aList[:]:

    tempC = c
    tempD = D

    tempX = tempC * 2 # These are just a placeholders for another calculation
    tempY = tempD * 2

    if tempX <= 10:
        aList[i].append(tempX)
        aList[i].append(tempY)
    else:
        del aList[i] 

    i += 1

期待される結果: aList = [[6, 7, 8, 9, 10, 16, 18], [11, 12, 13, 14, 15, 26, 28]]

代わりに、これは

ValueError: too many values to unpack

編集

いくつかの調査の後、私はこの解決策にたどり着きました。

キーは次のとおりですbList = aList[::-1]。これにより、リストが逆順に結合され、ジャッキなしで車からタイヤを効果的に外そうとした前の例の状況が解消されます。

aList = [[1,2,3,4,5],[6,7,8,9,10],[11,12,13,14,15],[16,17,18,19,20],[21,22,23,24,25],[26,27,28,29,30]]
bList = aList[::-1]

i = 0

for a, b, c, d, e in bList:
    tempC = c
    tempD = d

    tempX = tempC * 2
    tempY = tempD * 2

    if tempX >= 50:
        bList[i].append(tempX)
        bList[i].append(tempY)
    else:
        del bList[i]

    i += 1

print bList

2行おきにスキップしているという事実を除けば、これは良い解決策です。行をスキップする原因がよくわかりません。

[[26, 27, 28, 29, 30, 56, 58], [21, 22, 23, 24, 25], [16, 17, 18, 19, 20], [11, 12, 13, 14, 15], [6, 7, 8, 9, 10], [1, 2, 3, 4, 5]]
[[26, 27, 28, 29, 30, 56, 58], [16, 17, 18, 19, 20], [11, 12, 13, 14, 15], [6, 7, 8, 9, 10], [1, 2, 3, 4, 5]]
[[26, 27, 28, 29, 30, 56, 58], [16, 17, 18, 19, 20], [6, 7, 8, 9, 10], [1, 2, 3, 4, 5]]
[[26, 27, 28, 29, 30, 56, 58], [16, 17, 18, 19, 20], [6, 7, 8, 9, 10]]

期待される結果: bList = [[26, 27, 28, 29, 30, 56, 58]]他のすべての行を削除する必要があります

4

1 に答える 1

1

コードから離れすぎずに...

aList = [[1,2,3,4,5],[6,7,8,9,10],[11,12,13,14,15],[16,17,18,19,20],[21,22,23,24,25],[26,27,28,29,30]]
bList = []

i = 0

for a, b, c, d, e in aList:
    tempC = c
    tempD = d

    tempX = tempC * 2
    tempY = tempD * 2

    if tempX >= 50:
        bList.append(aList[i]+ [tempX,tempY])
    i += 1

print bList
于 2013-10-29T14:56:11.887 に答える