有没有办法只使用一个join()方法简化这行代码?

2024-04-29 15:49:19 发布

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

代码本身如下所示:

phrase="Don't panic!"
plist=list(phrase)
print(phrase)
print(plist)

phrase_1=''.join(plist[1:3])
phrase_2=''.join(plist[5:3:-1])
phrase_3=''.join(plist[7:5:-1])
phrase=phrase_1+phrase_2+phrase_3
plist=list(phrase)

print(phrase)
print(plist)

结果显示如下:

Don't panic!
['D', 'o', 'n', "'", 't', ' ', 'p', 'a', 'n', 'i', 'c', '!']
on tap
['o', 'n', ' ', 't', 'a', 'p']

主要目标是使用列表切片以更少的代码行以与上面相同的结果执行程序

我试图将列表片段插入到单个变量phrase=''.join()

phrase=''.join(plist[[1:3],[5:3:-1],[7:5:-1]])
plist=list(phrase)

但它会返回一个语法错误:

    phrase=''.join(plist[[1:3],[5:3:-1],[7:5:-1]])
                               ^
SyntaxError: invalid syntax

有没有办法缩小这行代码


Tags: 代码目标列表on切片taplistplist
2条回答

您的代码似乎正在将一个字符串转换为一个列表,转换为多个列表,将每个字符串转换为多个字符串,再转换回一个列表

您可以将字符串直接转换为目标字符串,也可以选择转换为列表:

phrase = "Don't panic!"

print(phrase[1:3] + phrase[5:3:-1] + phrase[7:5:-1])
print(list(phrase[1:3] + phrase[5:3:-1] + phrase[7:5:-1]))

输出:

on tap
['o', 'n', ' ', 't', 'a', 'p']

你可以这样做:

phrase=''.join((*plist[1:3], *plist[5:3:-1], *plist[7:5:-1]))

使用解包将所有短语部分放入一个元组&;然后将其传递给''.join()

这将导致相同的输出:

Don't panic!
['D', 'o', 'n', "'", 't', ' ', 'p', 'a', 'n', 'i', 'c', '!']
on tap
['o', 'n', ' ', 't', 'a', 'p']

可以说有点难读

相关问题 更多 >