このリストがここにある場合:
[25, 8, 22, 9]
プログラムで 2 つの別々のリストを作成し、両方を印刷するにはどうすればよいですか? 1 つは 20 未満のすべての数字を含み、もう 1 つは 20 より大きいすべての数字を含む必要があります。最終的な印刷結果は次のように表示されます[8, 9]
。[25, 22]
このリストがここにある場合:
[25, 8, 22, 9]
プログラムで 2 つの別々のリストを作成し、両方を印刷するにはどうすればよいですか? 1 つは 20 未満のすべての数字を含み、もう 1 つは 20 より大きいすべての数字を含む必要があります。最終的な印刷結果は次のように表示されます[8, 9]
。[25, 22]
>>> predicates = lambda x:x<20, lambda x:x>20
>>> print [filter(pred, [25, 8, 22, 9]) for pred in predicates]
[[8, 9], [25, 22]]
リスト内包表記を使用する:
>>> 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]
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)
の各要素で構成されるリストを作成x
しcond(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よりも少ないです—他に。
注: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)
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]
li = [25, 8, 22, 9]
li.sort()
for i, x in enumerate(li):
if x > 20:
print li[:i]
print li[i:]
break