📚

【Python】競プロで使えるかもしれない小ネタ(String編)

に公開

1.文字列リストを半角スペース区切りの文字列にする

strings = ['I', 'have', 'a', 'pen.']

print(" ".join(strings))    # "I have a pen."

2."Yes"/"No"を返したいときにやるやつ


answer = 1
print('YNeos'[answer != 1::2])        # Yes

print(["No", "Yes"][answer == 0])     # No

# 三項演算子を使うのが無難です
print("Yes" if answer == 1 else "No") # Yes

3.文字の出現数をカウントする

# よくある「文字列Aの文字を入れ替えて文字列Bがつくれるか」っていうやつ
mojiretsu = "anagram"
mojicnt = {}

for c in mojiretsu:
	# getを使えばdictの要素存在チェックしなくていいのでシンプル
    mojicnt[c] = mojicnt.get(c, 0) + 1
    
print(mojicnt)
# {'a': 3, 'n': 1, 'g': 1, 'r': 1, 'm': 1}

4.文字列Aで使用されている文字が文字列Bにすべて存在するか

# 文字列A,Bの文字使用回数辞書を作成する(上記3を参照)
stra_dic = {"s": 2, "t": 1, "p": 1}
strb_dic = {"s": 2, "t":1, "e": 1, "p": 1}

print(all(strb_dic.get(char, 0) >= count for char, count in stra_dic.items()))    # True

5.文字列の循環比較

#文字列を2文字ずつチェックして、最後の文字は最初の文字を比較する
s = 'abcdef'

for i in range(len(s)):
    print(s[i]+s[(i+1)%len(s)])
	"""
	ab
	bc
	cd
	de
	ef
	fa
	"""

Discussion