1

このリストがここにある場合:

[25, 8, 22, 9] 

プログラムで 2 つの別々のリストを作成し、両方を印刷するにはどうすればよいですか? 1 つは 20 未満のすべての数字を含み、もう 1 つは 20 より大きいすべての数字を含む必要があります。最終的な印刷結果は次のように表示されます[8, 9][25, 22]

4

6 に答える 6

5
>>> predicates = lambda x:x<20, lambda x:x>20
>>> print [filter(pred, [25, 8, 22, 9]) for pred in predicates]
[[8, 9], [25, 22]]
于 2012-06-28T04:58:15.033 に答える
4

リスト内包表記を使用する:

>>> L = [25, 8, 22, 9]
>>> [x for x in L if x < 20]
[8, 9]
>>> [x for x in L if x > 20]
[25, 22]
于 2012-06-28T04:58:10.883 に答える
1
a =  [25, 8, 22, 9] 
print [x for x in a if x > 20]
print [x for x in a if x < 20]

ここでリスト内包を使用します。リスト内包表記は次のようになります。

[ f(x) for x in a if cond(x) ]

つまり、f(x)の各要素で構成されるリストを作成xcond(x)てくださいTrue

私たちの場合f(x)は単純xです。そしてcond(x)x > 20またはですx < 20(リストに20が含まれている場合、結果から消えることにも注意してください)。

宿題の場合は、より低レベルの方法でタスクを解決できます。

a = [25, 8, 22, 9]
list1 = []
list2 = []
for elem in a:
  if elem > 20:
     list1.append(elem)
  if elem < 20:
     list2.append(elem)
print list1
print list2

ここでは、リストを繰り返し処理し、その要素を確認します。20を超える要素を1つのリストに追加します。そしてそれは20よりも少ないです—他に。

于 2012-06-28T04:58:03.087 に答える
1

注:listTwoに20が必要であると想定しています

listOne = [x for x in yourList if x < 20]
listTwo = [x for x in yourList if x >= 20]

print listOne
print listTwo

リスト内包表記を使用する必要がありますが、Pythonを使用している場合は、forループアプローチに興味があるかもしれません。

listOne = []
listOne = []

for x in yourList:
    if x < 20:
        listOne.append(x)
    else:
        listTwo.append(x)
于 2012-06-28T04:58:06.767 に答える
1
def print_split_list(raw_list, split_value):
    lower_list = [v for v in raw_list if v < split_value]
    upper_list = [v for v in raw_list if v >= split_value]
    print lower_list, upper_list

print_split_list([25, 8, 22, 9], 20)  # => [8, 9] [25, 22]
于 2012-06-28T04:59:52.757 に答える
-2
li = [25, 8, 22, 9]
li.sort()

for i, x in enumerate(li):
    if x > 20:
        print li[:i]
        print li[i:]
        break
于 2012-06-28T05:48:59.020 に答える