1、将输入转化为list
sublist = list(map(int, input().split()))
注:map(int, input().split())
的结果是一个 map 对象,它是一个迭代器。在这个例子中,map
函数将 input().split()
返回的列表中的每个元素都转换为整数类型,但这些转换并没有立即执行,而是在需要时逐个生成。
2、 python字母的生成方式
1、利用import string
import string
# 生成小写字母列表
lowercase_letters = list(string.ascii_lowercase)
# 生成大写字母列表
uppercase_letters = list(string.ascii_uppercase)
# 生成字母表的字典
alphabet_dict = {letter: index+1 for index, letter in enumerate(string.ascii_uppercase)}
alphabet_dict.update({letter: index+1 for index, letter in enumerate(string.ascii_lowercase)})
print(alphabet_dict)
2、在ASCII码表中,大写字母从65(A)开始,到90(Z)结束,小写字母从97(a)开始,到122(z)结束。
# 生成字母表的字典
alphabet_dict = {}
# 生成大写字母表
for i in range(65, 91):
alphabet_dict[chr(i)] = i - 64
# 生成小写字母表
for i in range(97, 123):
alphabet_dict[chr(i)] = i - 96
print(alphabet_dict)
3、字符串和enumerate函数
# 生成字母表的字典
alphabet_dict = {}
# 生成大写字母表
for index, letter in enumerate("ABCDEFGHIJKLMNOPQRSTUVWXYZ", start=1):
alphabet_dict[letter] = index
# 生成小写字母表
for index, letter in enumerate("abcdefghijklmnopqrstuvwxyz", start=1):
alphabet_dict[letter] = index
print(alphabet_dict)
3、代码优化
选出列表中长度最长和最短的单词
def extreme_words_in_sentence(sentence):
words = sentence.split()
longest_word = min(words, key=len)
shortest_word = max(words, key=len)
return longest_word, shortest_word
找出距离最近的元音
#获取列表标签是不熟咩
#原来的
def closest_vowel(letter):
# 此处编写代码
import string
lower=list(string.ascii_lowercase)
duibi=[0,4,8,14,20]
for i in range(0,26):
if lower[i]==letter.lower():
min_num=6
for k in duibi:
if abs(i-k)<min_num:
min_num=abs(i-k)
for j in duibi:
if abs(i-j)==min_num:
return lower[j]
#简化之后的
def closest_vowel(letter):
import string
vowels = 'aeiou'
lower = list(string.ascii_lowercase)
index = lower.index(letter.lower())
closest_vowel = min(vowels, key=lambda x: abs(lower.index(x) - index))
return closest_vowel
4、排列组合
itertools.permutations()
函数来找出给定列表中所有元素的排列
from itertools import permutations
def get_all_permutations(digits):
for perm in permutations(digits):
print(''.join(map(str, perm)))
# Example usage:
digits = [1, 2, 3]
get_all_permutations(digits)
5、集合函数combinations
from itertools import combinations
# 生成长度为2的所有可能组合
combo = combinations([1, 2, 3, 4], 2)
# 打印所有组合
for c in combo:
print(c)
6、关于连续数字出现的问题,连续的1的出现,110模式和倒数11
def count_consecutive_ones(input_list):
# 此处编写代码
k=0
for i in range(0,len(input_list)-2):
if input_list[i]==1 and input_list[i+1]==1 and input_list[i+2]==0:
k=k+1
if input_list[-1]==1 and input_list[-2]==1:
k=k+1
return k
# 获取输入, 转换为列表
input_list = list(map(int, input().split()))
# 调用函数
print(count_consecutive_ones(input_list))
7、给定的数字是否可以表示为两个或多个连续正数的和
def check_consecutive_sum(n):
if n % 2 == 1:
return True
if n & (n - 1) == 0:
return False
return True
n = int(input())
print(check_consecutive_sum)
表达式 n & (n - 1) == 0
通常用于检查一个数是否是 2 的幂。如果 n
是 2 的幂,那么它的二进制表示中只有一位是 1,其他位都是 0。而 n - 1
则将最低位的 1 变为 0,其他位变为 1。因此,当 n
是 2 的幂时,n & (n - 1)
的结果将为 0。