私は1から100の範囲の数値を持っていますが、その範囲に1を含むすべての数値を印刷したいだけです。例えば1を含む数字はどうやって印刷しますか?
:
1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 31, 41, 51, 61, 71, 81, 91, 100
どのように私は1の含まれている数字を印刷します?
私は1から100の範囲の数値を持っていますが、その範囲に1を含むすべての数値を印刷したいだけです。例えば1を含む数字はどうやって印刷しますか?
:
1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 31, 41, 51, 61, 71, 81, 91, 100
どのように私は1の含まれている数字を印刷します?
あなたはこのようにそれを行うことができます。ここでは
print [i for i in range(1, 101) if '1' in str(i)]
@ Kasramvd私はあなたに同意しない。質問者はパフォーマンス要件を指定していません。それは答えの中で最も適切な方法です。 – Szabolcs
いくつかのベンチマーク: '>>> timeit.timeit( '__main__インポートcontain_oneから' 'リスト(フィルタ(contain_one、範囲(101)))'、セットアップ=、番号= 1000)' ' 0.031100595099559314''> >> timeit.timeit( "[str(i)の '1'の場合は[i]の範囲(1,101)にあります)、 ' 0.020970157049845284' – Szabolcs
が一つの方法です:
In [5]: def contain_one(num):
...: while num:
...: remainder = num%10
...: if remainder == 1:
...: return True
...: num = num // 10
...:
In [6]: list(filter(contain_one, range(101)))
Out[6]: [1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 31, 41, 51, 61, 71, 81, 91, 100]
# Or use a list comprehension:
In [8]: [i for i in range(101) if contain_one(i)]
Out[8]: [1, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 31, 41, 51, 61, 71, 81, 91, 100]
'残りは間違っていますか? – WhatsThePoint
'range(101)'は '0'から '100'ではなく '1'から '100'までの数字をリストします – Szabolcs
あなたはstr
にint
を変換したくない場合は、リストを印刷し、これを試してみてください。
_filter_=lambda x:x if x%10==1 or x==1 or x==100 or 10<=x<20 else None
print filter(_filter_,range(1,101))
または
print filter(lambda x:x if "1" in str(x) else None,range(1,101))
または文字列
print ",".join(map(str,filter(lambda x:x if "1" in str(x) else None,range(1,101))))
文字列またはリストということですか?より具体的にしてください。また、何を試しましたか? –