Skip to main content
 首页 » 编程设计

python之避免对第一个和/或最后一个元素进行操作

2025年05月04日25lidabo

我有一个包含一些文本的列表:

my_list = ['sentence1','sentence2','sentence3','sentence4' ] 

我想输出这样的字符串:

'sentence1, sentence2, sentence3, sentence4' 

如果我这样做,我会在最后得到一个附加的 ', '

string_sentences = '' 
for sentence in my_list: 
    string_sentences +=  sentence +', ' 
string_sentences 
 
output: 'sentence1, sentence2, sentence3, sentence4, ' 

与此方法相同,但现在是开始:

string_sentences = '' 
for sentence in my_list: 
    string_sentences += ', ' + sentence  
string_sentences 
 
', sentence1, sentence2, sentence3, sentence4' 

我唯一能想到的就是跟踪索引

string_sentences = '' 
for i,sentence in enumerate(my_list): 
    if i +1 < len(my_list): 
        string_sentences += sentence +', ' 
    else: 
        string_sentences += sentence 
string_sentences 
 
ouput: 'sentence1, sentence2, sentence3, sentence4' 

但这似乎是一个非常普遍的问题,我想知道是否有更 pythonic 的方法来解决它。

请您参考如下方法:

使用 join将列表转换为字符串的方法。提供一个分隔符,该分隔符将位于从进入字符串的列表中提取的每个元素之间。在这种情况下,, 和逗号后的空格 ' ':

my_list = ['sentence1','sentence2','sentence3','sentence4' ] 
s = ', '.join(my_list) 

通过打印 s 我们将得到:

'sentence1, sentence2, sentence3, sentence4' 

关于为什么在这里使用 join 实际上更可取的一些额外说明,因为它实际上以 C 速度运行,而不是从 Python 循环获得的速度。阅读性能提示 here .

最后,在执行此操作时发出警告。 join 总是需要一个可迭代的字符串。这意味着,如果您有一个整数列表 [1, 2, 3, 4]。您将无法直接调用 join。您必须将这些值中的每一个都转换为 str。一个简单的例子是这样的:

list_of_ints = [1, 2, 3, 4] 
', '.join([str(n) for n in list_of_ints]) 

所以,进一步解释一下刚刚在上面的例子中发生了什么。因为我们实际上有一个整数列表。为了成功地从该列表创建我们的字符串,我们需要将列表中的每个元素转换为一个字符串。为此,我们将使用列表理解来创建这个字符串整数列表,然后调用您的连接方法。

现在,我们实际上没有在这里使用生成器表达式并使用列表推导的原因是,实际上 join 方法实际上会扫描可迭代对象两次,因此在这种情况下推导实际上更快。

这实际上解释得很好 here .