예제)특정 조합이 리스트 요소에 반드시 포함되어야 한다는 사실만 알 때의 조건식

작성자: [관리자] 하얀설표

2025.07.24 14:39 (KST) 작성됨

2025.08.20 10:45 (KST) 수정됨






(08.20) 수정됨.

str object가 다수 들어있는 list[str] object가 있다고 가정하자.

그리고 나는 현재 이 list의 각 요소가 정확히 무엇이어야 하는지는 모르지만, 각 index 요소마다 어떤 문자열이 포함되어야만 하는지에 대해서는 알고 있다.

이런 경우 어떻게 해야 할까?

 

코드

대충 다음과 같이 하면 된다.

data = [
 '가나다라',
 '1234',
 'abcd',
 '가갸거겨',
 '4321',
 'xyz',
]

check_list = []
for d in data:
 check = []
 check += [all([s in d for s in ['가나', '나다']])]
 check += [all([s in d for s in ['12', '34']])]
 check += [all([s in d for s in ['b', 'cd']])]
 check += [all([s in d for s in ['32', '1']])]
 print(f'{d=}')
 print(f'{check=}')
 check_list.append(check)

checks = [any(check) for check in zip(*check_list)]
print(f'{checks=}')
if checks and all(checks):
 print('조건을 만족함')
else:
 print('조건을 만족하지 않음')

 

출력문

위 코드 작동시 출력문은 다음과 같다.

>> d='가나다라'
check=[True, False, False, False]
d='1234'
check=[False, True, False, False]
d='abcd'
check=[False, False, True, False]
d='가갸거겨'
check=[False, False, False, False]
d='4321'
check=[False, False, False, True]
d='xyz'
check=[False, False, False, False]
checks=[True, True, True, True]
조건을 만족함

 

원리는 *check_list로 check_list의 요소들을 arg로 묶어서 zip 명령에 전달하고, 각 요소들을 새롭게 묶는 것이다.

이 방법을 통해 리스트의 동일 인덱스를 묶는 것이 가능하다.

표와 비교하자면 표의 가로세로 행을 서로 변경하는 것이다.

# 기존 check_list
[0 1 2 3 4]

[0 1 2 3 4]

[0 1 2 3 4]


# zip으로 병합시킨 checks

[0 0 0]

[1 1 1]

[2 2 2]

[3 3 3]

[4 4 4]

 

코드 줄이기

다음과 같이 코드를 줄이는 것도 가능하다.

data = [
 '가나다라',
 '1234',
 'abcd',
 '가갸거겨',
 '4321',
 'xyz',
]

string_list = [
 ['가나', '나다'],
 ['12', '34'],
 ['b', 'cd'],
 ['32', '1']
]

check_list = [[all([s in d for s in strings]) for strings in string_list] for d in data]

checks = [any(check) for check in zip(*check_list)]
if checks and all(checks):
 print('조건을 만족함')
else:
 print('조건을 만족하지 않음')

 

인덱스 지정하기

리스트의 몇 번 인덱스에 부합해야하는 조건을 특정할 수 있다면, 다음과 같이 인덱스값을 추가하여 검사하는 것도 가능하다.

data = [
 '가나다라',
 '1234',
 'abcd',
 '가갸거겨',
 '4321',
 'xyz',
 'zzz',
 '111',
]

string_dict = {
 0: ['가나', '나다'],
 1: ['12', '34'],
 2: ['b', 'cd'],
 3: ['32', '1']
}

check_list = [strings and all([s in data[index] for s in strings]) for index, strings in string_dict.items()]

if check_list and all(check_list):
 print('조건을 만족함')
else:
 print('조건을 만족하지 않음')

 

 






추천 (0)


글 목록

댓글을 달 수 없는 게시물입니다.


"분류없음" 카테고리의 #Python, #예제 관련 게시물

썸네일
분류없음
주식시장 개장일과 휴장일 정보를 간단하게 가져오는 방법(엑셀, 파이썬)
수정 07.20 | [관리자] 하얀설표
👍 0
#Python, #주식
🗨️ 0
분류없음
해결) 장고 bulk_update의 메모리 누수 문제(django orm bluk_update method memory leak)
수정 07.12 | [관리자] 하얀설표
👍 0
#Python, #Django
🗨️ 0
분류없음
해결) django.db.utils.OperationalError: database is locked
수정 06.18 | [관리자] 하얀설표
👍 0
#Python, #에러해결, #Django
🗨️ 0
분류없음
악성 크롤러를 괴롭히는 방법
수정 05.18 | [관리자] 하얀설표
👍 0
#Python, #Django
🗨️ 0
분류없음
장고) 모든 방문자에게 세션 부여하기(anonymous user session)
수정 05.15 | [관리자] 하얀설표
👍 0
#Python, #Django
🗨️ 0
썸네일
분류없음
한국거래소의 수정주가 계산 공식을 알아보자
수정 05.10 | [관리자] 하얀설표
👍 0
#Python, #주식
🗨️ 0
썸네일
분류없음
파이썬으로 연속 조회가 가능한 주식 차트 만들기(tkinter, seolpyo-mplchart)
수정 05.08 | [관리자] 하얀설표
👍 0
#Python
🗨️ 0
썸네일
분류없음
seolpyo-mplchart document
수정 05.08 | [관리자] 하얀설표
👍 0
#Python
🗨️ 0
썸네일
분류없음
seolpyo_mplchart 사용 설명서
수정 05.08 | [관리자] 하얀설표
👍 0
#Python
🗨️ 0
분류없음
tkinter) 단어 자동완성 기능 만들기(autocomplete word suggest)
작성 01.20 | [관리자] 하얀설표
👍 0
#Python
🗨️ 0