support
목록의 요소에서 전달 된 항목이 발생하는 횟수를 계산 하는 함수가 있다고 가정 합니다.
>>> rows = ['candy apple banana cookie', 'candy apple banana', 'candy', 'apple', 'apple banana candy', 'candy apple', 'banana']
>>> def support(item, rows):
return float(sum([1 for row in rows if item in row]))
>>> print(support('apple', rows))
5.0
잘 작동하지만 결국 데이터에서 두 항목이 함께 발생 하는 빈도를 측정해야합니다 . 다음과 같이 정의 할 수 있습니다.
>>> def joint_support(items, rows):
return float(sum([1 for row in rows if all(item in row.split() for item in items)]))
나는 똑같은 일을 효과적으로하는 두 가지 함수를 정의하지 않고 싶다. 사용자가에서 하나 또는 두 개의 요소를 전달하는지 여부에 관계없이 items
함수가 데이터에서 해당 항목의 발생을 공동으로 또는 개별적으로 계산하기를 원합니다. if
문을 사용하여 길이를 측정 하지 않고 items
(즉, 목록 이해를 사용하여) items
매개 변수가 하나의 문자열 인 경우 함수가 각 개별 문자의 공동 발생을 검색하지 않도록하려면 어떻게해야합니까?
이것이 내가 지금까지 가지고있는 것입니다.
>>> def master_support(items, rows):
return float(sum([1 for row in rows if all(item in row.split() for item in items if type(items) is not str) else 1 if items in row.split()]))
효과적으로, 난 내가 자동으로 변환 할 수있는 방법 부탁 해요 생각 str
에 list
개별 문자 인리스트의 요소없이.
내가 당신이 맞다면 당신은 이와 같은 것을 찾고 있습니다.
def joint_support(items, rows):
return sum([1 for row in rows if set(items).issubset(set(row.split()))])
두 번째 set
는 선택 사항입니다.
rows = ['candy apple banana cookie', 'candy apple banana', 'candy', 'apple', 'apple banana candy', 'candy apple', 'banana']
rows2 = ['candy apple banana cookie']
items = ['apple', 'banana']
joint_support(items, rows)
joint_support(items, rows2)
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다