したがって、リスト内の 2 の倍数をすべて削除したいと考えています。どうすればいいですか?しかし、別の質問があります。たとえば、3 の倍数をすべて削除したい場合、たとえば 6 の場合はどうなりますか?
3 に答える
リスト内の2または3の倍数をすべて削除するには、リスト内包表記を実行して、探している倍数で均等に分割できる整数を除外する条件を適用することをお勧めします。あなたがあなたのコードの例を投稿したなら、私はおそらくあなたにもっと良い助けを与えることができます、しかしあなたの質問に基づいて私は次のことを提案します...
nums = [0,1,2,3,4,5,6,7,8]
no_mult_of_2 = [ x for x in nums if x%2 != 0 ]
no_mult_of_3 = [ x for x in nums if x%3 != 0 ]
print no_mult_of_2
print no_mult_of_3
プリント...
[1, 3, 5, 7]
[1, 2, 4, 5, 7, 8]
ご覧のとおり、2と3の倍数であるため、どちらの場合も6はなくなりました。0が欠落していることに注意してください。これを実行したいかどうかわからないので、それを覚えておいてください。
また...ここの文化は、ユーザーが単に解決策を求めるのではなく、問題について考えようとすることを奨励しているため、あなたの質問はおそらく非常に多くの反対票を受け取っています。私は最初はこれを自分で理解していませんでした、そしていくつかの機会に私の質問は反対票を投じられました。ただし、がっかりしないでください。私たちは支援するためにここにいます。将来質問するときに、あなたがどのような進歩を遂げたか(例)を示してください。
a = range(10)
a = filter(lambda n: n%2 != 0, a)
それはあなたに[1、3、5、7、9]を与えるでしょう
ご覧のとおり、これ以上 6 はありません (6 の倍数でも同じことが起こります)。
次に、3 の倍数を削除すると
a = filter(lambda n: n%3 != 0, a)
a は [1, 2, 4, 5, 7, 8] になります
これを行うことができます(インデックスによる場合):
>>> l=range(100)
>>> l[:]=[e for i,e in enumerate(l) if i%2]
または、リストの要素の値の倍数による場合は、次のようになります。
>>> l=range(100)
>>> l[:]=[e for e in l if e%2]
e
3の倍数には(またはi
)を使用% 3
します。6は2または3の倍数であるため、どちらの場合も削除されます。