首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >python-模运算符理解

python-模运算符理解
EN

Stack Overflow用户
提问于 2018-08-04 03:46:15
回答 1查看 68关注 0票数 -2

我碰到了一些代码,它们以一种我以前从未见过的方式使用了模运算符。问题所在的行是data_index = (data_index + 1) % len(data)

我不知道这段代码在更新data_index时要做什么

代码语言:javascript
复制
def generate_batch(batch_size, num_skips, skip_window):
    global data_index
    assert batch_size % num_skips == 0
    assert num_skips <= 2 * skip_window
    batch = np.ndarray(shape=(batch_size), dtype=np.int32)
    labels = np.ndarray(shape=(batch_size, 1), dtype=np.int32)
    span = 2 * skip_window + 1 # [ skip_window target skip_window ]
    buffer = collections.deque(maxlen=span)
    for _ in range(span):
        buffer.append(data[data_index])

        # What is this doing?
        data_index = (data_index + 1) % len(data)
# ... More stuff ...
EN

回答 1

Stack Overflow用户

发布于 2018-08-04 04:25:34

模运算符%具有定义良好的行为。它产生除以一个数字后的余数。它以返回值ca % b表达式形式使用

该定义创建了一个有趣的属性,用于问题提供的代码中,将值“包装”到一个定义良好的范围中。有问题的代码在一个循环中使用它,以确保data_index被包装在0len(data) - 1的范围内。当它超出边界时,它只是继续从0开始追加data[data_index]

下面是模的循环行为的一个例子:

代码语言:javascript
复制
for i in range(10):
    print(str(i) + ' % 3 =', i % 3)

打印的内容:

代码语言:javascript
复制
0 % 3 = 0
1 % 3 = 1
2 % 3 = 2
3 % 3 = 0
4 % 3 = 1
5 % 3 = 2
6 % 3 = 0
7 % 3 = 1
8 % 3 = 2
9 % 3 = 0
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51679228

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档