一些python代码基础

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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值