如何在python列表理解中实现代码

如何在python列表理解中实现代码,python,python-3.x,Python,Python 3.x,我试图理解如何使用python列表理解方法编写下面的代码。在代码中,假设顺序始终为[string,int,string int],我需要将字符串与其自身乘以列表中的下一个元素连接起来。有没有办法用列表理解法重写下面的代码?多谢各位 def array_translate(arr): i = 0 mystring = '' while i < len(arr): pet = arr[i] if i + 1 < len(arr):

我试图理解如何使用python列表理解方法编写下面的代码。在代码中,假设顺序始终为[string,int,string int],我需要将字符串与其自身乘以列表中的下一个元素连接起来。有没有办法用列表理解法重写下面的代码?多谢各位

def array_translate(arr):
    i = 0
    mystring = ''
    while i < len(arr):
        pet = arr[i]
        if i + 1 < len(arr):
            num = arr[i+1]
        arr[i] = pet*num
        i += 2

    for i in arr:
        if not str(i).isdigit():
            mystring += "".join(i)
        else:
            continue
    return mystring

print (array_translate(["Cat", 2, "Dog", 3, "Mouse", 1])) # => "CatCatDogDogDogMouse"
def数组_转换(arr):
i=0
mystring=''
而我“猫鼠”

要对列表中的项目进行配对,您可以从列表中创建一个迭代器,并将迭代器自身压缩,这样您就可以在生成器表达式或列表理解中对名称和计数对进行迭代,以便
str.join
在按各自的计数重复字符串后将它们联接到一个字符串中:

def array_translate(arr):
    i = iter(arr)
    return ''.join(name * count for name, count in zip(i, i))
以便:

array_translate(["Cat", 2, "Dog", 3, "Mouse", 1])
返回:

'CatCatDogDogDogMouse'

如果您可以将其格式化为元组列表,例如:
[(“猫”,2),(“狗”,3),(“鼠标”,1)]
,那么下面的操作就可以了

''.join([a[0] * a[1] for a in array])

它所做的是创建一个包含动物x倍的字符串列表。然后“”。join()将它们连接在一起。

是的,这是可能的。如果要迭代成对的值,请使用
zip

def数组_转换(arr):
pets=arr[0::2]
nums=arr[1::2]
返回“”。加入([pet*num代表pet,num在zip中(pets,nums)])
打印(数组翻译([“猫”,2,“狗”,3,“鼠标”,1]))
首先创建两个新列表,
pets
只包含字符串,而
nums
只包含数字。列表是使用切片表示法创建的:
arr[0::2]
是从索引0开始的每2个元素,
arr[1::2]
是从索引1开始的每2个元素

join方法用于将结果字符串连接在一起。

给定的
arr=[“Cat”,2,“Dog”,3,“Mouse”,1]

这里有一个单行解决方案,没有
zip
iter

print(“”.join([arr[i]*arr[i+1]表示范围内的i(0,len(arr),2]))
产出:

CatCatDogDogDogMouse

这真是一个很酷的解决方案!非常感谢。你能分享我可以在python中学习iter和zip的任何资源吗?不客气。你可以在官方网站上学习关于iter和zip的