List Comprehension from String to Integer Changes Output
我正在处理项目Euler问题8,因此请避免在您的答案中走得太远。
代码中的问题是,当我添加int转换时,输出更改,一些组不再是13位数字。这种情况在整个过程中会发生多次,但最容易被发现的是从最后一次到第五次。
1 2 3 4 | def large_product(n): string_n = str(n) n = [int(str_n[i:i+13]) for i in range(0, len(str_n), 13)] print(n) |
当我添加引起输出改变的int转换,并且某些组不再是13位数字时,会发生什么?这在整个过程中会发生多次,但下面第一个简单的例子是:
1 | 5593572972, 5716362695618, 8267042825248, 3600823257530, 420752963450 |
如果我删除int并返回一个字符串列表,它们的长度都是正确的13位数字,但是我不能将它们转换回int,并且会不断地收到一条"invalid literal for int()with base 10"消息。
1 2 3 4 | n = [(str_n[i:i+13]) for i in range(0, len(str_n), 13)] str_n = str(n) int_n = int(str_n) print(int_n) |
返回:
1 | ValueError: invalid literal for int() with base 10:"['7316717653133', '0624919225119', '6744265747423', '5534919493496', '9835203127745', '0632623957831', '8016984801869', '4788518438586', '1560789112949', '4954595017379', '5833195285320', '8805511125 |
如何使这些数字组在某个位置相乘,然后进行比较?事先谢谢。
问题似乎出在以0为前缀的数字上。当您将一个字符串转换为以0为前缀的整数时,int转换将忽略零并打印整个数字。
为了清晰起见,
1 | print(int('0084646')) |
下面块中的错误是您试图将列表转换为int。
1 2 3 4 | n = [(str_n[i:i+13]) for i in range(0, len(str_n), 13)] # a list is getting generated str_n = str(n) #"['7316717653133', '0624919225119', '6744265747423', '5534919493496', '9835203127745', '0632623957831', '8016984801869'..] -- '[' and ',' are special characters here int_n = int(str_n) #converting list to int which will fail actually as special characters are there in string print(int_n) |
因为我不确定您打算做什么,所以我不确定int()转换是否对您有帮助。
为了打印目的,请在此处和此处使用参考。
我建议您使用
将整数列表相加-正态与numpy
整数乘法列表-正态与numpy