PyCharm中split()相关代码运行结果与其他环境不一致的原因
代码输出不一致?其实是逻辑错误
你遇到的不是PyCharm和其他环境的差异问题,核心是代码逻辑本身错了。
看你代码里的关键行:
my_arr = [list(map(int, input_2.split())) for _ in range(N)]
input_2.split()默认会把**所有空白字符(包括换行符\n)**当成分隔符,直接把整个input_2拆成['1', '2', '3', '4']。循环N次(2次)后,每次都把这个完整列表转成整数列表,自然得到[[1,2,3,4], [1,2,3,4]]——这是所有Python环境下的统一结果。
你说在HackerRank或ChatGPT控制台得到了预期的[[1,2],[3,4]],大概率是你在那些环境里运行的代码不是硬编码的input_2版本,而是用input()函数循环读取每行输入,比如正确的写法应该是:
import numpy as np input_1 = '2 2' input_2 = '1 2\n3 4' N, M = map(int, input_1.split()) # 先按换行分割input_2,再逐行处理 my_arr = [list(map(int, line.split())) for line in input_2.split('\n')] print(np.prod(np.sum(my_arr, axis=0)))
如果是真实输入场景(比如HackerRank的输入),正确写法是:
import numpy as np N, M = map(int, input().split()) my_arr = [list(map(int, input().split())) for _ in range(N)] print(np.prod(np.sum(my_arr, axis=0)))
这种写法才会逐行读取输入,生成符合预期的二维数组。
你误以为是环境差异,本质是在不同环境里运行的代码并非完全一致,并非PyCharm或其他平台的Python解释器有区别。
内容的提问来源于stack exchange,提问作者Milbot
相关产品推荐
相关产品推荐

