将包含整数的元组解包到列表
Unpacking a tuple containing integers to a list
我正在尝试使用包含整数的元组创建单个列表
输入示例:
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() is not iterable error"。
我试图将变量分配给输入,但出现“'type' 对象不可订阅”错误。
我现在已经多次重写脚本并且没有保存以前的尝试。我在这里找到的解包方法不起作用,因为它们需要我遍历输入,而我不能这样做(或弄清楚如何)。 b = [i for sub in args for i in sub]
、list(chain.from_iterable(args)
等无效。
这是我现在拥有的
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 的新手,所以我确信解决方案非常简单
如果模式总是元组,可以是 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)
你可以用递归来对抗递归;如果元组可以包含 other 个元组,则用递归函数将它们展平:
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)
我正在尝试使用包含整数的元组创建单个列表
输入示例:
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() is not iterable error"。 我试图将变量分配给输入,但出现“'type' 对象不可订阅”错误。
我现在已经多次重写脚本并且没有保存以前的尝试。我在这里找到的解包方法不起作用,因为它们需要我遍历输入,而我不能这样做(或弄清楚如何)。 b = [i for sub in args for i in sub]
、list(chain.from_iterable(args)
等无效。
这是我现在拥有的
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 的新手,所以我确信解决方案非常简单
如果模式总是元组,可以是 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)
你可以用递归来对抗递归;如果元组可以包含 other 个元组,则用递归函数将它们展平:
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)