5

条件に基づいてリストからサンプルを取得しようとしています。簡単にできるはずですが、次のようにできません。

a = [2,4,5,9,1,6,4]
b = 6
c = [x for x in a if a < b]

基本的に、6 未満の値を含む新しいリストが必要です。何か提案はありますか?

4

3 に答える 3

7

または、別の方法:

>>> a = [2,4,5,9,1,6,4]
>>> b = 6
>>> c = filter(lambda x: x < b, a)
>>> c
[2, 4, 5, 1, 4]

イグナシオが指摘したように、あなたはほとんどそれを持っていました:

>>> c = [x for x in a if x < b]
>>> c
[2, 4, 5, 1, 4]

リスト内包表記は、このループをより長く記述する方法です。

>>> c = []
>>> for x in a:
...     if x < b:
...         c.append(x)
...
>>> c
[2, 4, 5, 1, 4]
于 2013-08-25T05:34:30.973 に答える
1

あなたが逃しました。シーケンスではなく、各要素を比較する必要があります。

c = [x for x in a if x < b]
于 2013-08-25T05:32:29.427 に答える
0

ええと、そうif x < bですか。また、配列 a の値が整数ではなく文字列であるという問題もあります。それで: [x for x in a if int(x)<b]

于 2013-08-25T05:33:41.253 に答える