2016-07-29 4 views
-1

목록에서 문자 조합을 계산하려고했습니다. 내 대본에서 튜플 수를 계산할 수는 있지만 목록에있는 문자의 수를 어떻게 계산할 수 있는지 알 수 없습니다.파이썬에서 3 개의 튜플을 함께 결합하는 방법

이것은 내가 사용한 스크립트입니다.

def count(num): 
    character = 0 
    for i in num: 
     character += 1 
    return character 

count ('1234','1234',1234') 

내 대답은 내가 그렇게 할 수있는 방법 (12)을 보여주고 싶은 3

입니까?

+1

'character + = len (i)'? – mgilson

+3

또, 나는 당신의 코드가 당신에게 3의 답을 줄지는 의심 스럽다 ... 3 개의 인자를 가진'count'를 호출하기 때문에'TypeError'를주는 것처럼 보인다. – mgilson

답변

3
def count(num): 
    total = 0 
    for i in num: 
     total += len(i) 
    return total 

또는 더 짧고 파이썬 : 또한

def count(num): 
    return sum(len(x) for x in num) 

당신이 목록 또는 튜플 인수, 예를 들어, 그것을 호출해야합니다

메소드 정의 (def count (* num))에 별표를 추가하여 이전과 같은 방식으로 호출 할 수 있습니다. (('1234', '1234', '1234' 원래.

+1

sum map (len, num)) – mtadd

3

더 관용적 느낌 때문에 나는 제임스의 방법을 선호 싶지만,이 기능적 접근 방식은 다음과 같은 형태가 될 것이다 당신이 대신 count(('1234', '1234', '1234'))count('1234', '1234', '1234')를 호출하여 작업 할 경우,

def count(num): 
    return sum(map(len, num)) 

을 수행 할 수 있습니다 def count(*num)으로 함수를 정의하십시오. 당신이 그 통화를 모두 작업 할 (그리고 원자 유형은 오직 문자열입니다 확신합니다) 경우

마지막으로, 당신은이 작업을 수행 할 수 있습니다

def count(*num): 
    return sum(len(n) if isinstance(n, str) else count(*n) for n in num) 
+0

이 방법은 더 빠릅니다. 확실히 좋은 방법입니다. 내 생각에 일반적으로 더 읽기 쉽습니다. 그러나 실제로 대규모 데이터 세트에서이 작업을 수행했다면이 방법을 사용할 것입니다. – James

+1

@James 더 빠르지 않습니까? 나는 발전기 내포물이 꽤 잘 최적화되었다고 생각했다. – L3viathan

+0

[약간, 예] (http://stackoverflow.com/questions/1247486/python-list-comprehension-vs-map). 그들은 꽤 잘 최적화되어 있습니다. 차이 맵의 종류는 매우 유용하지 않습니다. – James

0

당신이 기능을 필요로하는 경우 다양한 작업을 할 때 다음 정의를 사용할 수 있습니다 (mylist가 중첩 목록이 아닌 한).

def countchars(mylist): 
    return sum([len(item) for item in mylist]) 

또는, 함께 튜플/목록을 병합 할 수 및 병합 된 튜플/목록의 길이를 얻기 위해() 렌을 사용합니다.

+0

처음에는 새로운 목록을 만들어야한다는 단점이 있습니다. 발전기 이해력을 사용하십시오. – L3viathan

+1

또한 계산 후 결과를 반환하지 않는 단점이 있습니다.) –

+0

수정되었습니다 ... –

관련 문제