python-3.x 如何在Leetcode中解包输入

dwbf0jvd  于 2023-01-03  发布在  Python
关注(0)|答案(1)|浏览(107)

我是一个编程新手,已经解决了codechef和hackerrank中的一些问题,在这些平台中,通常列表或列表/数组中的元素是以带有空格的整数字符串的形式给出的
例如:'5 4 6 7'我可以在python中使用input(). split()方法解包它们但是在leetcode中,我得到了一个类型为'[1,2,3,4],target = 7'的输入我发现很难将这些值从字符串解包为有意义的数据类型。有人能帮我吗?[上下文:leetcode中的两个和问题https://leetcode.com/problems/two-sum/]
我尝试将字符串的奇数索引追加到列表中

Input: nums = [2,7,11,15], target = 9
a=input()
l=[]
for i in range(len(a)):
    if i%2!=0:
        l.append(a[i])
print(l)

但我得到了以下输出和以下错误
标准输出["2","7","1",",""5"]运行时错误

TypeError: 'int' object is not iterable
Line 19 in _deserialize (./python3/__deserializer__.py)
    param_1 = des._deserialize(line, 'integer[]')
Line 25 in _driver (Solution.py)
    _driver()
Line 43 in <module> (Solution.py)
p4rjhz4m

p4rjhz4m1#

我想你要找的是.split的sep关键字参数,它允许你从任何字符进行分割。这通常默认为““,这就是为什么你不需要每次都把它放进去。同样,正如其他人提到的,你不需要接受任何输入,因为函数已经接受输入了。

nums = nums[1:-1].split(sep=",")

如果您确实需要处理像nums = [2,7,11,15], target = 9这样的输入,我的方法是:

inp = input() # get input
inp = inp.replace("nums = ", "").replace("target = ", "") # remove the value names
nums, target = inp.split(sep=", ") # unpack items from list: [nums, target]
nums = nums[1:-1].split(sep=", ")

或者把它浓缩成

nums, target = input().replace("nums = ", "").replace("target = ", "").split(sep=", ")
nums = nums[1:-1].split(sep=",")

相关问题