如何使用列表理解来切换元组中单词中的两个字母?

How to switch two letters in a word which is in a tuple using list comprehension?

我有一个包含已拆分单词的元组列表:

split_l = [('', 'eta'), ('e', 'ta'), ('et', 'a'), ('eta', '')]

我想把第一个元组右边的单词eta的位置拆分成2个新单词。

代码:

switch_l = [L + R[1] + R[2:] for L,R in split_l if len(R) >= 2]

预期结果:

switch_l = ['tea', 'eat']

当前结果:

switch_l = ['ta', 'ea']

例如,将 et 交换将产生 tea。然后将 ta 交换生成 eat。如果元组最右边的元素有 len() > 2.

,则应该进行交换

我认为初始逻辑不适合您对列表的理解。您想查找包含两个长度至少为 1 的字符串的元组对,并分别交换第一个和第二个字符串的最后一个字符和第一个字符:

switch_L = [L[:-1] + R[0] + L[-1] + R[1:] for L,R in split_l if len(L) > 0 and len(R) > 0]