映射a`字符串.连接`使用字符串列表返回不期望的字符串列表

2024-06-28 10:59:33 发布

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

我试着按照指示做:

>>> values ['9', '31', '32']
>>> map('abc'.join, values)
and got:
['9', '3abc1', '3abc2']

但我想:

['abc9', 'abc31', 'abc32']

为什么我错了?你知道吗

为了记录在案,我用了:

>>> map(lambda x: 'abc%s' % x, values)

但是我仍然对第一个地图构造的行为感到困惑!你知道吗

谢谢你所有有见地的回答。他们都是正确的和有帮助的,所以我不得不掷骰子来选择接受哪一个-我会接受他们中的任何一个;-)


Tags: andlambdamap地图valuesabcjoingot
3条回答

这将随后调用

'abc'.join('9')

它给出了'9',因为在join的给定参数中只有一个元素,那么

'abc'.join('31')

因为'31'['3', '1']相似,所以结果是'3abc1',依此类推。你知道吗

你想要的是

["abc" + x for x in values]

方法str.join()使用点前面的部分作为字符串,通过它连接其他字符串的iterable。这就是为什么

"abc".join(["12", "34"])

结果

"12abc34"

如果只是将字符串作为iterable传入,则各个字符就是该iterable的项:

"abc".join("1234")

结果

"1abc2abc3abc4"

'abc'.join(l)在连接l中的项时,使用abc作为分隔符

将它与values列表映射时,对values中的每个项调用一次方法。由于字符串在Python中是可iterable的,因此每个字符都用作一个项。你知道吗

相关问题 更多 >