Python 将包含整数的元组解包到列表
我试图创建一个包含整数的元组的列表 输入示例:Python 将包含整数的元组解包到列表,python,list,int,tuples,Python,List,Int,Tuples,我试图创建一个包含整数的元组的列表 输入示例: test1((1, 2, 3), 2, 3) test2((5, -5), 10, 3) test3((10.2, -2.2, 0, 1.1, 0.5), 12.4, 3) 我尝试过以各种方式迭代元组,但得到了一个“int()不是iterable错误”。 我试图将变量分配给输入,但得到了一个“'type'对象不可下标”错误 我现在已经重写了很多次脚本,没有保存以前的尝试。我在这里找到的解包方法不起作用,因为它们需要我迭代输入,而我不能这样做(
test1((1, 2, 3), 2, 3)
test2((5, -5), 10, 3)
test3((10.2, -2.2, 0, 1.1, 0.5), 12.4, 3)
我尝试过以各种方式迭代元组,但得到了一个“int()不是iterable错误”。
我试图将变量分配给输入,但得到了一个“'type'对象不可下标”错误
我现在已经重写了很多次脚本,没有保存以前的尝试。我在这里找到的解包方法不起作用,因为它们需要我迭代输入,而我不能这样做(或者弄清楚如何做)<代码>b=[i代表sub中的子参数,i代表sub中的子参数],列表(链。从参数(args)
ect未工作
这是我现在拥有的
def checkio(*args):
ab, cd, ef = args
print (ab)
empty = []
empty.append(cd)
empty.append(ef)
for i in ab:
empty.append(i)
print (empty)
有点乱。我对python很陌生,所以我确信如果模式始终是tuple(可以是2种模式之一),那么解决方案非常简单:
- 元组
- 数
my_tuple = ((10.2, -2.2, 0, 1.1, 0.5), 12.4, 3)
my_list = []
for v in my_tuple:
if isinstance(v, tuple):
my_list.extend += v
else:
my_list.append(v)
print my_list
输出:
[10.2, -2.2, 0, 1.1, 0.5, 12.4, 3]
这是一个模式和数据结构的问题。如果您的输入与示例一样规则,答案很简单;通过连接以下内容创建一个新元组:
def checkio(ab, cd, ef):
return ab + (cd, ef)
这会将带有(cd,ef)
的新元组连接到现有的ab
元组
对于不同的模式,您需要测试值;如果您得到的只是元组或整数,并且元组不是嵌套的,那么这很简单:
def checkio(*args):
result = []
for value in args:
if isinstante(value, tuple):
result += value
else:
result.append(value)
return tuple(result)
您可以使用递归来对抗递归;如果元组可以包含其他元组,请使用递归函数将其展平:
def checkio(*args):
result = []
for value in args:
if isinstante(value, tuple):
result += checkio(*value)
else:
result.append(value)
return tuple(result)
你试过这个吗:
a = (1,2,3)
b = [*a]
print(b)
它将元组转换为列表。
或者干脆
print(*a)
所有输入都是正则的;一个元组和两个整数。这种模式总是存在吗?@Ashwini如果输入是正则的,就像Martijn刚才问的那样,那么这不是一个duplicate@MartijnPieters让我们说是的。我正在Chekio上执行一项任务,这就是他们用来测试我脚本的所有输入,但我不确定他们是否会抛出cur“把球扔给我。”@NickKremer:在这种情况下,只需接受3个参数,并使用ab+(cd,ef)
创建一个新的元组。看起来第一个参数不是一个只有更多数字的元组。@jamylak我浏览了整个网站,没有找到任何解决我问题的方法。如果我忽略了一篇文章,链接将非常有用。不要使用列表理解副作用;你正在创建一个返回值为my_list.append()
的list对象,然后再次丢弃该列表。这是一种浪费!只需使用my_list.extend(v)
或my_list+=v
就可以了;它们会为您迭代。@Martijn Pieters您创建的列表是对的,不使用它是一种浪费,我用extend修复了它。