python for循环多个值/对象?在'之后;在';
我不明白语法在做什么,这是for循环:python for循环多个值/对象?在'之后;在';,python,loops,for-loop,Python,Loops,For Loop,我不明白语法在做什么,这是for循环: for n, id_ in tqdm(enumerate(test_ids), total=len(test_ids)): 我在Kaggle内核中找到了它。我试着尽可能多地搜索解决方案,但找不到任何关于python for循环的示例或解释,其中for循环的一部分中的“in”后面有多个逗号分隔的值。因为我不知道这叫什么,所以我不确定还要搜索什么 这是整个代码块: for n, id_ in tqdm(enumerate(test_ids), total=l
for n, id_ in tqdm(enumerate(test_ids), total=len(test_ids)):
我在Kaggle内核中找到了它。我试着尽可能多地搜索解决方案,但找不到任何关于python for循环的示例或解释,其中for循环的一部分中的“in”后面有多个逗号分隔的值。因为我不知道这叫什么,所以我不确定还要搜索什么
这是整个代码块:
for n, id_ in tqdm(enumerate(test_ids), total=len(test_ids)):
path = TEST_PATH + id_
img = imread(path + '/images/' + id_ + '.png')[:,:,:IMG_CHANNELS]
sizes_test.append([img.shape[0], img.shape[1]])
img = resize(img, (IMG_HEIGHT, IMG_WIDTH), mode='constant', preserve_range=True)
X_test[n] = img
这是代码所在的内核:您可以在for
循环中为iterable使用多个逗号分隔的元素,但这里并不是这样。在中的之后只有一件事,一个函数调用恰好包含两个参数
与此情况相比:
for x in range(0, 10):
右侧没有两个逗号分隔的值0
和10
,只有一个范围
如果右边有两个或多个逗号分隔的值怎么办?那么它只是一个元组:
>>> for x in 1, 2, 3:
... print(x)
1
2
3
对于(1,2,3)中的x,它与中的元组完全相同:
在您的例子中,使事情稍微复杂一点的是tqdm
返回的任何内容的单个元素都被解包。(在本例中,它生成传入的任何内容,并且由于传入了枚举
,因此每个元素都是一个索引值对。)因此在中的左侧有两个逗号分隔的目标
但这是一个完全独立的问题,您可以通过一个简单的列表来重复:
>>> word = ['aa', 'ab', 'bc']
>>> for first_letter, second_letter in words:
... print(first_letter, second_letter)
a a
a b
b c
解包与任务中的解包相同:
>>> first, second = 'az'
>>> first
'a'
>>> second
'z'
在for
循环中,可以对iterable使用多个逗号分隔的元素,但这里并不是这样。在
中的之后只有一件事,一个函数调用恰好包含两个参数
与此情况相比:
for x in range(0, 10):
右侧没有两个逗号分隔的值0
和10
,只有一个范围
如果右边有两个或多个逗号分隔的值怎么办?那么它只是一个元组:
>>> for x in 1, 2, 3:
... print(x)
1
2
3
对于(1,2,3)中的x,它与中的元组完全相同:
在您的例子中,使事情稍微复杂一点的是tqdm
返回的任何内容的单个元素都被解包。(在本例中,它生成传入的任何内容,并且由于传入了枚举
,因此每个元素都是一个索引值对。)因此在中的左侧有两个逗号分隔的目标
但这是一个完全独立的问题,您可以通过一个简单的列表来重复:
>>> word = ['aa', 'ab', 'bc']
>>> for first_letter, second_letter in words:
... print(first_letter, second_letter)
a a
a b
b c
解包与任务中的解包相同:
>>> first, second = 'az'
>>> first
'a'
>>> second
'z'
在这个for循环中发生的事情称为解包和压缩。您可以忽略tqdm函数,因为如果要删除它,唯一不同的是您不会看到加载条,但其他所有功能都可以正常工作。此代码
for n, id_ in tqdm(enumerate(test_ids), total=len(test_ids)):
工作原理与不使用负载杆时相同
for n, id_ in enumerate(test_ids):
enumerate所做的是将每个项的索引号放置在数组的新维度中给定的元组中。因此,如果数组输入是1D,那么输出数组将是2D,一个维度是索引,另一个维度是值。
让我们假设您的测试ID是[(2321),(2324),(23213)]
现在使用enumerate,列表现在看起来像[(02321),(12324),(223213)]
放置逗号的作用曾经是给定一个值(在for循环中)比如(02321)按照给定的顺序将每个元组值分开,因此在本例中,它们将等于n=0和id_=2321,在for循环中发生的事情称为解包和压缩。您可以忽略tqdm函数,因为如果要删除它,唯一不同的是您不会看到加载条,但其他所有功能都可以正常工作。此代码
for n, id_ in tqdm(enumerate(test_ids), total=len(test_ids)):
工作原理与不使用负载杆时相同
for n, id_ in enumerate(test_ids):
enumerate所做的是将每个项的索引号放置在数组的新维度中给定的元组中。因此,如果数组输入是1D,那么输出数组将是2D,一个维度是索引,另一个维度是值。
让我们假设您的测试ID是[(2321),(2324),(23213)]
现在使用enumerate,列表现在看起来像[(02321),(12324),(223213)]
放置逗号的作用曾经是给定一个值(在for循环中)比如(02321)按照给定的顺序将每个元组值分开,因此在这种情况下,它们将等于n=0和id_u=2321通常参考astqdm
返回某种类型的iterable,它被解包到变量n
和\u id
中。tqdm方法返回一个可能大小为2的列表。当分配给n时,第0个索引id被分配给n,第1个索引id@AnandSiddharthtqdm
不返回列表。在中的后面没有两个逗号分隔的值,只有一个函数调用(有两个参数,事实上,第二个参数是一个关键字参数,所以它看起来根本不像第二个值)它通常被称为as。tqdm
返回某种类型的iterable,它被解包到变量n
和\u id
。tqdm方法返回一个可能大小为2的列表。当分配给n时,第0个id索引被分配给n,第1个id索引被分配给id@AnandSiddharthtqdm
不返回list、 在
中的后面没有两个逗号分隔的值,只有一个函数调用(有两个参数,事实上,第二个参数是一个关键字参数,所以它看起来甚至不像第二个值).仅供参考,tqdm
是一个流行的进度条库。@juanpa.arrivillaga它可以产生多少对,可能会产生一个百分比和一个当前标签?(我不确定该信息是否