[アルゴリズムとデータ構造の概要] [Day3]リスト内の要素を最小数のコード行で直接置き換えるためのいくつかの方法


繰り返される文字列の数を 調べます(大文字と小文字は区別されません)。
テストデータ:
abcD1-> 0
aabBcde-> 2
indivisibility-> 1

方法1:

def duplicate_count(text):
    str =  text.lower()   
    if text.isalnum() is True:   
        WordCount = {}
        for num in str:
            if num in WordCount:
                WordCount[num] += 1
            else:
                WordCount[num] = 1
        print(text,'-->',len([i for i in WordCount if WordCount[i] >1]))    
    else:
        print(text,"\nError:Text contains something other letters and numbers")       
duplicate_count("abcD1")
duplicate_count("aabBcde")
duplicate_count("indivisibility")
duplicate_count("2#kkk")

ここに画像の説明を挿入

方法2:

def duplicate_count(text):  
    if text.isalnum() is True:   
        print(text,'-->',len(set(c for c in text.lower() if text.lower().count(c)>1)))    
    else:
        print(text,"\nError:Text contains something other letters and numbers")       
duplicate_count("abcD1")
duplicate_count("aabBcde")
duplicate_count("indivisibility")
duplicate_count("2#kkk")

ここに画像の説明を挿入

方法3:

def duplicate_count(text):
    if text.isalnum() is True:
        word_count = {}
        text_lower = text.lower()
        for i in text_lower:
            if text_lower.count(i) > 1:
                word_count[i] = text_lower.count(i)
        print(text,"-->",len(word_count))
    else:
        print(text,"\nError:Text contains something other  numbers and letters")
duplicate_count("abcD1")
duplicate_count("aabBcde")
duplicate_count("indivisibility")
duplicate_count("2#kkk")

ここに画像の説明を挿入

方法4:

import pandas as pd 
def duplicate_count(text):
    list = []
    for c in text:
        list.append(c.lower())
    df = pd.DataFrame(list,columns = ['1'])
    
    count = 0
    for i in df.groupby('1').size():
        if (i > 1):
            count += 1
    print(count)
        
duplicate_count("abcD1")
duplicate_count("aabBcde")
duplicate_count("indivisibility")
duplicate_count("2#kkk")

ここに画像の説明を挿入

方法5:

def duplicate_count(text):
    text_set = set()
    [text_set.add(s) for s in text.upper() if text.upper().count(s) > 1]
    return len(text_set)
print(duplicate_count('abcde'))
print(duplicate_count('aabBcde'))
print(duplicate_count('indivisibility'))

ここに画像の説明を挿入

方法6:

'''
dict.setdefault()方法接收两个参数,
第一个参数是健的名称,第二个参数是默认值。
假如字典中不存在给定的键,则返回参数中提供
的默认值;反之,则返回字典中保存的值
'''
from collections import defaultdict
def duplicate_count(text):    
    WordCount = {}    
    for num in text.lower():
        WordCount.setdefault(num, 0)
        WordCount[num] += 1       
    print(text,'-->',len([i for i in WordCount if WordCount[i] >1]))             
duplicate_count("abcD1")
duplicate_count("aabBcde")
duplicate_count("indivisibility")

ここに画像の説明を挿入

公開された42の元の記事 賞賛された28 訪問4961

おすすめ

転載: blog.csdn.net/KaelCui/article/details/105329259