Skip to main content
 首页 » 编程设计

python之在 Python 中是否有优雅简洁的语法来执行此操作

2025年05月04日11虾米哥

基本上我有这样一个字符串:

"1,2,3 2,3,4 3,4,5 4,5,6 5,6,7 26,117,1212" 

我想用空格分割它,然后替换每个元素中的第 i 个元素。所以如果我用 0 替换每个第二个元素,那么结果将是:

"1,0,3 2,0,4 3,0,5 4,0,6 5,0,7 26,0,1212" 

我是否应该拆分它,然后对于每个字符串元素,将它们拆分在一个 for 循环中,然后如果我在指定的索引处,则使用指定的值,否则使用元素本身,然后将其附加到最终字符串?

我认为在 Python 中做同样的事情可能有更好/更快和更短的方法。

请您参考如下方法:

nums = [[int(num) for num in substring.split(',')] for substring in s.split()] 
for row in nums: 
    row[1] = 0 

第一行将输入从文本格式转换为数字列表列表,第二行和第三行替换每个子列表中的第二项。此时,如果您需要打印数字或将它们写入文件或其他内容,您可以转换回字符串,但如果您需要继续使用数字,最好继续使用 nums 列表。

如果您要立即将数据转回字符串,则不值得调用 int。在那种情况下,代码减少到

nums = [substring.split(',') for substring in s.split()] 
for row in nums: 
    row[1] = '0' 

然后转换回字符串,

string_representation = ' '.join(','.join(row) for row in nums) 

要替换每个部分的第一个或第三个元素,只需将 row[1] = '0' 中的 1 替换为您要替换的索引即可。 0 表示第一个元素,2 表示第三个元素。您可以使用要使用的索引创建一个函数:

def zero_out_column(s, index): 
    nums = [substring.split(',') for substring in s.split()] 
    for row in nums: 
        row[index] = '0' 
    return ' '.join(','.join(row) for row in nums)