如何使用 map() 将列表中每个字符串的每个字符增加三倍,而不是将列表中的每个字符串增加三倍?

How can I use map() to triple each character of each string in a list, rather than tripling each string in the list?

我有以下 list:

eight_bit_binary = ['01101000', '01100101', '01111001']

我想将 eight_bit_binary 中的每个项目增加三倍,因此对于“01101000”->“000111111000111000000000”;第二项和第三项也一样。

在我看来,我知道以下内容不太有效,但它接近我所追求的:

eight_bit_binary = map(lambda n:n*3, eight_bit_binary)

它产生“01101000”->“011010000110100001101000”,这当然不是我想要的。

我怎样才能调整它以使其按照我的意愿运行?我知道一定有一些 for 循环,但我不太明白。任何帮助都会很棒!

您的 map(, eight_bit_binary) 将逻辑应用于 eight_bit_binary 的每个值,您希望将该逻辑应用于每个值的元素,您需要第二级迭代

eight_bit_binary = ['01101000', '01100101', '01111001']
eight_bit_binary = ["".join(map(lambda n: n * 3, e)) for e in eight_bit_binary]
print(eight_bit_binary)
# ['000111111000111000000000', '000111111000000111000111', '000111111111111000000111']

map() 允许您访问和更改列表的每个元素。然后,您需要通过再次调用 map().

来访问这些字符串的每个成员
binary = ['01101000', '01100101', '01111001']
longer = list(map(lambda n: ''.join(map(lambda x: x*3, n)), binary))

另请注意,我可能会在此处使用列表理解而不是直接调用 map():

[''.join(x*3 for x in b) for b in binary]
eight_bit_binary = ['01101000', '01100101', '01111001']
eight_bit_binary = [''.join([c*3 for c in item]) for item in eight_bit_binary]
print(eight_bit_binary)

结果为:

['000111111000111000000000', '000111111000000111000111', '000111111111111000000111']