[PYTHON] 목록 또는 단일 정수를 인수로 처리하십시오.
PYTHON목록 또는 단일 정수를 인수로 처리하십시오.
함수는 행 이름 (이 경우 2 열)을 기반으로 테이블의 행을 선택해야합니다. 인수로 단일 이름 또는 이름 목록을 취하여 올바르게 처리 할 수 있어야합니다.
이것은 내가 지금 가지고있는 것이지만 이상적으로는 중복 된 코드가 존재하지 않을 것이고 예외가 입력 인수를 처리하는 올바른 방법을 선택하는 데 지능적으로 사용될 것입니다.
def select_rows(to_select):
# For a list
for row in range(0, table.numRows()):
if _table.item(row, 1).text() in to_select:
table.selectRow(row)
# For a single integer
for row in range(0, table.numRows()):
if _table.item(row, 1).text() == to_select:
table.selectRow(row)
해결법
-
==============================
1.사실 Andrew Hare의 답변에 동의합니다. 단 하나의 요소로 목록을 전달하십시오.
사실 Andrew Hare의 답변에 동의합니다. 단 하나의 요소로 목록을 전달하십시오.
그러나 실제로 비 목록을 받아 들여야한다면, 그 경우 목록으로 바꾸는 것이 어떻습니까?
def select_rows(to_select): if type(to_select) is not list: to_select = [ to_select ] for row in range(0, table.numRows()): if _table.item(row, 1).text() in to_select: table.selectRow(row)
단일 항목 목록에서 'in'을 수행하면 성능이 저하 될 수 있습니다. 하지만 'to_select'목록이 길면 고려해야 할 또 다른 사항을 지적합니다. 조회를보다 효율적으로 수행 할 수 있도록 세트로 캐스팅하는 것이 좋습니다.
def select_rows(to_select): if type(to_select) is list: to_select = set( to_select ) elif type(to_select) is not set: to_select = set( [to_select] ) for row in range(0, table.numRows()): if _table.item(row, 1).text() in to_select: table.selectRow(row)
-
==============================
2.다음과 같이 여러 가지 인수를 취하도록 함수를 재정의 할 수 있습니다.
다음과 같이 여러 가지 인수를 취하도록 함수를 재정의 할 수 있습니다.
def select_rows(*arguments): for row in range(0, table.numRows()): if _table.item(row, 1).text() in arguments: table.selectRow(row)
다음과 같이 하나의 인수를 전달할 수 있습니다.
select_rows('abc')
다음과 같은 여러 인수가 있습니다.
select_rows('abc', 'def')
이미 목록이있는 경우 :
items = ['abc', 'def'] select_rows(*items)
-
==============================
3.나는 이것을 단지 할 것이다 :
나는 이것을 단지 할 것이다 :
def select_rows(to_select): # For a list for row in range(0, table.numRows()): if _table.item(row, 1).text() in to_select: table.selectRow(row)
인수는 항상 하나의 요소 목록 일지라도 항상 목록이 될 것으로 기대합니다.
생각해 내다:
-
==============================
4.나는 Sharkey의 버전과 함께 가고 싶지만 조금 더 많은 타이 타이핑을 사용한다 :
나는 Sharkey의 버전과 함께 가고 싶지만 조금 더 많은 타이 타이핑을 사용한다 :
def select_rows(to_select): try: len(to_select) except TypeError: to_select = [to_select] for row in range(0, table.numRows()): if _table.item(row, 1).text() in to_select: table.selectRow(row)
이것은 in 연산자를 지원하는 모든 객체로 작업 할 때 이점이 있습니다. 또한 이전 버전에서는 튜플이나 다른 시퀀스가 있으면 목록으로 감쌀 것입니다. 단점은 예외 처리 사용에 약간의 성능 저하가 있다는 것입니다.
from https://stackoverflow.com/questions/998938/handle-either-a-list-or-single-integer-as-an-argument by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 파이썬 사전 : u '문자 제거하기 (0) | 2018.11.20 |
---|---|
[PYTHON] 파이썬은 어떻게 트리플 쿼트 문자열 작업을합니까? (0) | 2018.11.20 |
[PYTHON] 파일 이름을 file : // URL로 변환합니다. (0) | 2018.11.20 |
[PYTHON] URL에서 호스트 이름 변경하기 (0) | 2018.11.20 |
[PYTHON] csv를 Google 콜라에서 데이터 프레임으로 읽습니다. (0) | 2018.11.20 |