fonction zip() et questions de programmation : préfixe commun le plus long (le code est simple et facile à comprendre)

1. fonction zip

La fonction zip() renvoie un objet de type zip, qui peut être converti en liste ou dict

#定义列表
a = [1, 2, 3]
b = [4, 5, 6]

# 打包为元组的列表,而且元素个数与最短的列表一致
a_b = zip(a, b)
# 输出zip函数的返回对象类型
print("a_b类型%s" % type(a_b))  # 输出:a_b类型<class 'zip'>
# 输出a_b
print(a_b)             # 输出:<zip object at 0x000001F4FB05A440>,
                       # 返回了这个zip对象在内存中的存储位置

# 将a_b转换为list形式或dict形式可以观看数据
print(list(a_b))       # [(1, 4), (2, 5), (3, 6)]
# 或者转换为dict形式(此时不采取上述转换为list的操作)
print(dict(a_b))       # {1: 4, 2: 5, 3: 6}

Fonction 2.zip(*zippé)

Le paramètre *zipped dans zip(*zipped) peut être un tableau de liste ou l'objet renvoyé par la fonction zip()

Exemple 1 : Somme ou moyenne de la direction verticale d'une liste à deux dimensions

sheet=[[1,2,3],[4,5,6],[7,8,9],[10,11,12]]

for i in zip(*sheet):
    print(i)
    print(sum(i)/len(i))

# 输出:
# (1, 4, 7, 10) 此时len(i)=4
# 5.5
# (2, 5, 8, 11)
# 6.5
# (3, 6, 9, 12)
# 7.5

Exemple 2 : Opérations sur une liste unidimensionnelle de chaînes

list1=['abcd','adks','ksc']
for x in zip(*list1):
      print(x)
          
# 对每个单词依次取相应位置的字符组成一个元组tuple,当某个字符串结束时则停止
# 输出 ('a', 'a', 'k')   ('b', 'd', 's')   ('c', 'k', 'c')

3. Question de programmation : le préfixe commun le plus long (question Likou)

Description du titre : Entrez une chaîne de plusieurs caractères alphanumériques séparés par des espaces sur une ligne (aucun autre caractère n'est inclus entre les chaînes une fonction pour trouver le plus long préfixe commun de ces chaînes et affichez , s'il n'y a pas de préfixe commun, affichez ' NON TROUVÉ '

Exemple : Entrée : serveur d'eau watt Sortie : wa

code:

def f(strs):
    prefix = ''
    for x in zip(*strs):             # 每个单词依次取相对应位置的字符组合
        if len(set(x)) == 1:         # 若去重后长度为1则为共有前缀字符(集合set元素唯一,可以去除                
                                     # 重复元素。三个元素相同时,去重后集合长度为1)
            prefix = prefix + x[0]   # 将共有字符拼接到字符串上
        else:                        # 若出现不同字符结束循环
            break
    if prefix:                       # 若字符串非空
        return prefix                # 返回共有前缀
    else:
        return 'NOT FOUND'
strs=list(input().split())  # 可以接收空格为间隔的所有元素构成列表
print(f(strs))

# 检验程序:
# 在python命令行输入:water waiter watt
# 则strs为:['water','waiter','watt']
# 最后一行输出:'wa'

Je suppose que tu aimes

Origine blog.csdn.net/m0_63077499/article/details/127117756
conseillé
Classement