반응형
두 번째 숫자가 항상 첫 번째 숫자보다 낮거나 같고, 세 번째 숫자가 두 번째 숫자보다 낮거나 같도록 모든 n 자리 숫자를 살펴보고 싶습니다. 다음과 같은 끔찍한 코드를 작성하여 얻을 수 있습니다.
for i in range(10):
for j in range(i+1):
for k in range(j+1):
등,하지만 10 자리 숫자를 사용하면 내 코드가 끔찍해 보이기 시작합니다. 또한 많은 글을 작성하고 일부를 칭찬하고 싶다면 들여 쓰기가 끔찍해집니다. 이것을 얻는 좋은 간결한 방법이 있습니까?
해결 방법
itertools
를 사용할 수 있습니다.
>>> for comb in itertools.combinations_with_replacement(range(9, -1, -1), 3):
print comb
(9, 9, 9)
(9, 9, 8)
(9, 9, 7)
(9, 9, 6)
...
(4, 0, 0)
(3, 3, 3)
(3, 3, 2)
(3, 3, 1)
(3, 3, 0)
(3, 2, 2)
(3, 2, 1)
(3, 2, 0)
(3, 1, 1)
(3, 1, 0)
(3, 0, 0)
(2, 2, 2)
(2, 2, 1)
(2, 2, 0)
(2, 1, 1)
(2, 1, 0)
(2, 0, 0)
(1, 1, 1)
(1, 1, 0)
(1, 0, 0)
(0, 0, 0)
또는 재귀 적으로 충분할 때까지 점점 더 많은 숫자를 추가하여 숫자 튜플 대신 int
객체를 더 직접 생성 할 수 있습니다 (실제로 필요한지 확실하지 않음).
def build(enough, prefix=0):
if prefix >= enough:
print(prefix)
return
for digit in range(prefix % 10 + 1) if prefix else range(1, 10):
build(enough, prefix * 10 + digit)
데모 ( " 000
"는 생략하고 원하는지 여부는 확실하지 않음) :
>>> n = 3
>>> build(10**(n-1))
100
110
111
200
210
211
220
221
222
300
310
311
320
321
322
330
331
332
333
400
410
411
420
참조 페이지 https://stackoverflow.com/questions/41764579
반응형
'파이썬' 카테고리의 다른 글
파이썬 How to create JSON object in Python (0) | 2020.10.24 |
---|---|
파이썬 내부 목록의 특정 색인으로 목록 목록을 정렬하는 방법은 무엇입니까? (0) | 2020.10.24 |
파이썬 Django Admin: Using a custom widget for only one model field (0) | 2020.10.24 |
파이썬 Pandas 데이터 프레임에서 타임 스탬프를 datetime.date로 어떻게 변환합니까? (0) | 2020.10.24 |
파이썬 matplotlib를 사용하여 이미지를 나란히 표시 (0) | 2020.10.24 |
댓글