如何将一个列表中的每个元素与另一个列表中的每个元素相乘?

2024-10-03 11:23:53 发布

您现在位置:Python中文网/ 问答频道 /正文

以列表为例:

["nae", "red"]
[5, 2, 3]

使用for循环打印以下内容:

"nnnnnaaaaaeeeee"
"nnaaee"
"nnnaaaeee"
"rrrrreeeeeddddd"
"rreedd"
"rrreeeddd"

以下是我目前掌握的情况:

list1 = ["nae", "red"]
list2 = [5, 2, 3]

z = 0

for x in list1:
    for y in list2:
        print(list1[z]*list2[z])
        z = z + 1

Tags: in列表for情况redprintlist2list1
3条回答

使用^{}生成对,然后使用^{}构造最终字符串

from itertools import product

words = ["nae", "red"]
numbers = [5, 2, 3]

for w, n in product(words, numbers):
    print(''.join(letter * n for letter in w))

输出

nnnnnaaaaaeeeee
nnaaee
nnnaaaeee
rrrrreeeeeddddd
rreedd
rrreeeddd

您可以使用列表:

list1 = ["nae", "red"]
list2 = [5, 2, 3]
r = [''.join(k*a for k in b) for a in list2 for b in list1]

输出:

['nnnnnaaaaaeeeee', 'rrrrreeeeeddddd', 'nnaaee', 'rreedd', 'nnnaaaeee', 'rrreeeddd']

解决方案的一个问题是没有迭代每个字符串的字符。这里有一个解决方案:

strings = ["nae", "red"]
mults = [5, 2, 3]

for string in strings:
    for mult in mults:
        s = ""
        for char in string:
            s += char * mult
        print(s)

输出:

nnnnnaaaaaeeeee
nnaaee
nnnaaaeee
rrrrreeeeeddddd
rreedd
rrreeeddd

相关问题 更多 >