如何使用列表理解来切换元组中单词中的两个字母?
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']
例如,将 e
与 t
交换将产生 tea
。然后将 t
与 a
交换生成 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]
我有一个包含已拆分单词的元组列表:
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']
例如,将 e
与 t
交换将产生 tea
。然后将 t
与 a
交换生成 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]