0%

python调用迭代器里面的内容

迭代器 Iterater

python要查看迭代器离得部分内容时,主要的有以下3种方法:(以查看第一个元素为例)

1.for循环

1
2
3
4
5
dev_iter = build_iterator(dev_data, config)
for i in dev_iter:
if i:
print(i)
break

结果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
((tensor([[ 101, 1036, 4997,  ...,    0,    0,    0],
[ 101, 1036, 4997, ..., 0, 0, 0],
[ 101, 1036, 4997, ..., 4851, 4289, 0],
...,
[ 101, 4495, 3189, ..., 831, 1044, 1355],
[ 101, 4495, 3189, ..., 7317, 7164, 7509],
[ 101, 7922, 6235, ..., 6804, 1931, 0]], device='cuda:0'), tensor([25, 29, 31, 32, 32, 32, 32, 32, 32, 29, 32, 32, 29, 20, 32, 29, 32, 32,
30, 31, 31, 32, 31, 29, 32, 32, 32, 32, 28, 30, 30, 32, 32, 31, 27, 32,
31, 30, 31, 32, 30, 32, 29, 30, 31, 32, 27, 25, 29, 32, 32, 32, 31, 30,
30, 31, 31, 22, 32, 31, 29, 32, 32, 31], device='cuda:0'), tensor([[1, 1, 1, ..., 0, 0, 0],
[1, 1, 1, ..., 0, 0, 0],
[1, 1, 1, ..., 1, 1, 0],
...,
[1, 1, 1, ..., 1, 1, 1],
[1, 1, 1, ..., 1, 1, 1],
[1, 1, 1, ..., 1, 1, 0]], device='cuda:0')), tensor([8, 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3,
3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7, 7, 7,
7, 7, 7, 7, 7, 7, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6], device='cuda:0'))

2.生成式/生成器

1
2
dev_iter = build_iterator(dev_data, config)
[_ for _ in dev_iter][0]

结果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
((tensor([[ 101, 1036, 4997,  ...,    0,    0,    0],
[ 101, 1036, 4997, ..., 0, 0, 0],
[ 101, 1036, 4997, ..., 4851, 4289, 0],
...,
[ 101, 4495, 3189, ..., 831, 1044, 1355],
[ 101, 4495, 3189, ..., 7317, 7164, 7509],
[ 101, 7922, 6235, ..., 6804, 1931, 0]], device='cuda:0'),
tensor([25, 29, 31, 32, 32, 32, 32, 32, 32, 29, 32, 32, 29, 20, 32, 29, 32, 32,
30, 31, 31, 32, 31, 29, 32, 32, 32, 32, 28, 30, 30, 32, 32, 31, 27, 32,
31, 30, 31, 32, 30, 32, 29, 30, 31, 32, 27, 25, 29, 32, 32, 32, 31, 30,
30, 31, 31, 22, 32, 31, 29, 32, 32, 31], device='cuda:0'),
tensor([[1, 1, 1, ..., 0, 0, 0],
[1, 1, 1, ..., 0, 0, 0],
[1, 1, 1, ..., 1, 1, 0],
...,
[1, 1, 1, ..., 1, 1, 1],
[1, 1, 1, ..., 1, 1, 1],
[1, 1, 1, ..., 1, 1, 0]], device='cuda:0')),
tensor([8, 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3,
3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7, 7, 7,
7, 7, 7, 7, 7, 7, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6], device='cuda:0'))

3.next()函数

1
2
dev_iter = build_iterator(dev_data, config)
next(dev_iter)

结果:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
((tensor([[ 101, 1036, 4997,  ...,    0,    0,    0],
[ 101, 1036, 4997, ..., 0, 0, 0],
[ 101, 1036, 4997, ..., 4851, 4289, 0],
...,
[ 101, 4495, 3189, ..., 831, 1044, 1355],
[ 101, 4495, 3189, ..., 7317, 7164, 7509],
[ 101, 7922, 6235, ..., 6804, 1931, 0]], device='cuda:0'),
tensor([25, 29, 31, 32, 32, 32, 32, 32, 32, 29, 32, 32, 29, 20, 32, 29, 32, 32,
30, 31, 31, 32, 31, 29, 32, 32, 32, 32, 28, 30, 30, 32, 32, 31, 27, 32,
31, 30, 31, 32, 30, 32, 29, 30, 31, 32, 27, 25, 29, 32, 32, 32, 31, 30,
30, 31, 31, 22, 32, 31, 29, 32, 32, 31], device='cuda:0'),
tensor([[1, 1, 1, ..., 0, 0, 0],
[1, 1, 1, ..., 0, 0, 0],
[1, 1, 1, ..., 1, 1, 0],
...,
[1, 1, 1, ..., 1, 1, 1],
[1, 1, 1, ..., 1, 1, 1],
[1, 1, 1, ..., 1, 1, 0]], device='cuda:0')),
tensor([8, 8, 8, 8, 8, 8, 8, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3,
3, 3, 3, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 7, 7, 7,
7, 7, 7, 7, 7, 7, 4, 4, 4, 4, 4, 4, 4, 4, 4, 6], device='cuda:0'))