Python 将数字字符串转换为整数列表?
例如,我被要求转换一个混合数字串(“1 3 5 8 10”),我的目标是将这些数字作为整数放入一个列表中 我有将字符串和int()拆分成整数的知识和诀窍,但问题在于我是如何做到的。Python 将数字字符串转换为整数列表?,python,Python,例如,我被要求转换一个混合数字串(“1 3 5 8 10”),我的目标是将这些数字作为整数放入一个列表中 我有将字符串和int()拆分成整数的知识和诀窍,但问题在于我是如何做到的。 我遇到的具体问题是在字符串中循环,查找字符并将其转换为整数。 当它循环通过并达到10(或任何2位数字)时,它将每个数字转换为自己的数字;所以:10应该是[1,0],而不是[10] 请原谅这里的代码混乱,我一直在尝试通过打印查看每一步都发生了什么: def iq_test(numbers): print(num
我遇到的具体问题是在字符串中循环,查找字符并将其转换为整数。
当它循环通过并达到10(或任何2位数字)时,它将每个数字转换为自己的数字;所以:10应该是[1,0],而不是[10] 请原谅这里的代码混乱,我一直在尝试通过打印查看每一步都发生了什么:
def iq_test(numbers):
print(numbers)
nums = []
numbers.split(" ")
nums.append(numbers)
print (numbers)
for char in numbers:
if char == " ":
del char
else:
nums.append(int(char)) # Problem arises here, where a 2 digit number is being added to the list as 2 separate numbers
print(nums)
对编码还是很陌生的,所以如果你注意到我遇到的一个主要的逻辑问题,如果你能指出给我听,我将不胜感激
def iq_test(numbers):
nums = []
for num in numbers.split():
nums.append(int(num))
我想。。。你可以(也可能应该)只做一个列表理解
nums = [int(num) for num in numbers.split()]
我想。。。你可以(也可能应该)只做一个列表理解
nums = [int(num) for num in numbers.split()]
您在迭代中使用了错误的数组,并且进行了一些错误的转换:
def iq_test(numbers):
print(numbers)
nums = []
for number in numbers.split(" "):
nums.append(int(number))
print(nums)
您在迭代中使用了错误的数组,并且进行了一些错误的转换:
def iq_test(numbers):
print(numbers)
nums = []
for number in numbers.split(" "):
nums.append(int(number))
print(nums)
首先,numbers.split(“”
本身并没有做任何有用的事情。将其分配给一个变量。此外,如果您不提供任何参数,它将始终在空格上拆分,因此您可以使用它
nums = numbers.split()
这样,您应该使用for num in nums
在分割的元素上循环,而不是在输入字符串的字符上循环
在任何情况下,您都可以通过使用列表理解来应用该int函数并返回整数列表来缩短所有这些
您已经定义了一个函数,因此您应该返回值
,而不仅仅是打印它
nums = [int(s) for s in numbers.split()]
return nums
然后你会打印(智商测试(“12310”)首先,数字。单独拆分(“”
)没有任何用处。将其分配给一个变量。此外,如果您不提供任何参数,它将始终在空格上拆分,因此您可以使用它
nums = numbers.split()
这样,您应该使用for num in nums
在分割的元素上循环,而不是在输入字符串的字符上循环
在任何情况下,您都可以通过使用列表理解来应用该int函数并返回整数列表来缩短所有这些
您已经定义了一个函数,因此您应该返回值
,而不仅仅是打印它
nums = [int(s) for s in numbers.split()]
return nums
然后你可以打印(iq测试(“12310”)你可以使用正则表达式:
import re
s = "1 3 5 8 10"
final_data = list(map(int, re.findall('\d+', s)))
print(final_data)
输出:
[1, 3, 5, 8, 10]
您可以使用正则表达式:
import re
s = "1 3 5 8 10"
final_data = list(map(int, re.findall('\d+', s)))
print(final_data)
输出:
[1, 3, 5, 8, 10]
这似乎正是我需要的解决方案。谢谢你详细说明了我的错误所在。干杯这似乎正是我需要的解决方案。谢谢你详细说明了我的错误所在。干杯