好吧,这可能是一个愚蠢的一个,但我现在有点卡住了。 我正在处理tuple类型的参数,包含列表列表,只是不能正确地读取它们。你知道吗
下面是一个基本示例:
def test(*args):
for arg in args:
print(arg)
print(arg[0])
print(arg[1])
testTuple1 = ([["x_1", "x_2", "x_3"], []])
testTuple2 = ([['x_1', 'x_2', 'x_3'], []], [['x_2', 'x_3'], ['x_1']])
test(testTuple1)
test(testTuple2)
其结果如下:
[['x_1', 'x_2', 'x_3'], []]
['x_1', 'x_2', 'x_3']
[]
([['x_1', 'x_2', 'x_3'], []], [['x_2', 'x_3'], ['x_1']])
[['x_1', 'x_2', 'x_3'], []]
[['x_2', 'x_3'], ['x_1']]
第一个示例的输出是我所期望的输出。但是我没有得到第二个例子的第一个输出。为什么我得到的是一个元组而不是元组中包含的第一个列表:[['x\u 1','x\u 2','x\u 3'],[]]?你知道吗
当您使用星号作为参数的修饰符时,它将允许您在调用函数时传递任意多个参数。你知道吗
它将把调用中的所有参数连接到一个元组中。你知道吗
当您只需将一个参数传递给函数调用时,元组参数将只包含这一个参数,而不管此对象实际具有什么类。只需在迭代之前进行打印。然后您将看到
args
的实际值,其解析为:([['x_1', 'x_2', 'x_3'], []],)
如果您想将iterable传递给函数,并将第一层的元素展开到参数中,只需在调用时再次使用星号即可。你知道吗
索引器发生了,因为空列表没有第0个元素,甚至没有第一个要获取的元素。你知道吗
因为在python中,paren既用于创建文本元组,也用于表达式的一般分组,这就产生了一些歧义。以下是您的列表,为清晰起见,添加了一些格式:
testTuple1
,因为外部参数只包含一个项目(最外层的列表),所以将计算为只包含该外部列表。帕伦一家就这么走了。但是在testTuple2
中,由于有多个逗号分隔的列表,它将计算为一个元组。你知道吗如果希望第一个参数也是元组,则需要在外部列表后添加一个尾随逗号,以明确地让python知道这些参数是用来表示1元组的,而不仅仅用于分组:
相关问题 更多 >
编程相关推荐