[PYTHON] 목록에서 고유 한 값을 계산하려면 어떻게합니까?
PYTHON목록에서 고유 한 값을 계산하려면 어떻게합니까?
그래서 나는 사용자에게 입력을 요구하고 배열 /리스트에 값을 저장할이 프로그램을 만들려고 노력하고있다. 그런 다음 빈 줄을 입력하면 고유 한 값의 수를 사용자에게 알려줍니다. 나는 현실적인 이유로 이것을 구축하고 있으며 문제가 아닙니다.
enter: happy
enter: rofl
enter: happy
enter: mpg8
enter: Cpp
enter: Cpp
enter:
There are 4 unique words!
내 코드는 다음과 같습니다.
# ask for input
ipta = raw_input("Word: ")
# create list
uniquewords = []
counter = 0
uniquewords.append(ipta)
a = 0 # loop thingy
# while loop to ask for input and append in list
while ipta:
ipta = raw_input("Word: ")
new_words.append(input1)
counter = counter + 1
for p in uniquewords:
.. 그리고 그것은 내가 지금까지 얻었던 누구나 근처에있다. 목록에서 고유 한 단어 수를 계산하는 방법을 모르겠습니다. 누군가가 솔루션을 게시하여 배울 수 있거나 적어도 멋진 방법을 보여 주면 감사합니다!
해결법
-
==============================
1.집합을 사용하여 중복을 제거한 다음 len 함수를 사용하여 집합의 요소를 계산할 수 있습니다.
집합을 사용하여 중복을 제거한 다음 len 함수를 사용하여 집합의 요소를 계산할 수 있습니다.
len(set(new_words))
-
==============================
2.또한 collections.Counter를 사용하여 코드를 리팩터링하십시오.
또한 collections.Counter를 사용하여 코드를 리팩터링하십시오.
from collections import Counter words = ['a', 'b', 'c', 'a'] Counter(words).keys() # equals to list(set(words)) Counter(words).values() # counts the elements' frequency
-
==============================
3.세트 사용 :
세트 사용 :
words = ['a', 'b', 'c', 'a'] unique_words = set(words) # == set(['a', 'b', 'c']) unique_word_count = len(unique_words) # == 3
이 무장 한 솔루션은 다음과 같이 간단 할 수 있습니다.
words = [] ipta = raw_input("Word: ") while ipta: words.append(ipta) ipta = raw_input("Word: ") unique_word_count = len(set(words)) print "There are %d unique words!" % unique_word_count
-
==============================
4.값, 개수 = np.unique (words, return_counts = True)
값, 개수 = np.unique (words, return_counts = True)
-
==============================
5.집합이 가장 쉬운 방법이지만, dict를 사용하고 some_dict.has (key)를 사용하여 고유 한 키와 값으로 사전을 채울 수도 있습니다.
집합이 가장 쉬운 방법이지만, dict를 사용하고 some_dict.has (key)를 사용하여 고유 한 키와 값으로 사전을 채울 수도 있습니다.
이미 사용자의 입력으로 단어 []를 채웠다 고 가정하면 목록의 고유 단어를 숫자로 매핑하는 dict을 작성하십시오.
word_map = {} i = 1 for j in range(len(words)): if not word_map.has_key(words[j]): word_map[words[j]] = i i += 1 num_unique_words = len(new_map) # or num_unique_words = i, however you prefer
-
==============================
6.ndarray에는 unique이라는 numpy 메소드가 있습니다.
ndarray에는 unique이라는 numpy 메소드가 있습니다.
np.unique(array_name)
예 :
>>> np.unique([1, 1, 2, 2, 3, 3]) array([1, 2, 3]) >>> a = np.array([[1, 1], [2, 3]]) >>> np.unique(a) array([1, 2, 3])
시리즈의 경우 value_counts () 함수 호출이 있습니다.
Series_name.value_counts()
-
==============================
7.
ipta = raw_input("Word: ") ## asks for input words = [] ## creates list unique_words = set(words)
-
==============================
8.다음은 작동해야합니다. 람다 함수는 중복 된 단어를 필터링합니다.
다음은 작동해야합니다. 람다 함수는 중복 된 단어를 필터링합니다.
inputs=[] input = raw_input("Word: ").strip() while input: inputs.append(input) input = raw_input("Word: ").strip() uniques=reduce(lambda x,y: ((y in x) and x) or x+[y], inputs, []) print 'There are', len(uniques), 'unique words'
-
==============================
9.나는 세트를 사용 하겠지만, 여기 또 다른 방법이있다.
나는 세트를 사용 하겠지만, 여기 또 다른 방법이있다.
uniquewords = [] while True: ipta = raw_input("Word: ") if ipta == "": break if not ipta in uniquewords: uniquewords.append(ipta) print "There are", len(uniquewords), "unique words!"
-
==============================
10.
ipta = raw_input("Word: ") ## asks for input words = [] ## creates list while ipta: ## while loop to ask for input and append in list words.append(ipta) ipta = raw_input("Word: ") words.append(ipta) #Create a set, sets do not have repeats unique_words = set(words) print "There are " + str(len(unique_words)) + " unique words!"
from https://stackoverflow.com/questions/12282232/how-do-i-count-unique-values-inside-a-list by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] django-allauth에서 템플릿을 재정의하는 방법은 무엇입니까? (0) | 2018.11.25 |
---|---|
[PYTHON] cProfile에서 의미있는 결과를 얻는 파이썬 (0) | 2018.11.25 |
[PYTHON] 비 블로킹 HTTP POST 요청 보내기 (0) | 2018.11.25 |
[PYTHON] 파이썬에서 Matlab의 'fread'에 해당하는 것은 무엇입니까? (0) | 2018.11.25 |
[PYTHON] 파이썬에서 소수 자릿수 지정하기 (0) | 2018.11.25 |