python循环只运行在

2024-05-28 21:11:27 发布

您现在位置:Python中文网/ 问答频道 /正文

为什么下面的函数只在a只发送一组数据时运行。我认为for each必须表示数据集中的每个值。在

data_checkpoint_size = cclient.samples.list(meter_name ='checkpoint.size')
data_checkpoint_length = cclient.samples.list(meter_name ='checkpoint.length')
data_checkpoint_pause = cclient.samples.list(meter_name ='checkpoint.pause')


def counterVolume(data_checkpoint_size, data_checkpoint_length, data_checkpoint_pause):
  for each in data_checkpoint_size:
    d = each.counter_volume
  for each in data_checkpoint_length:
    e = each.counter_volume
  for each in data_checkpoint_pause:
    f = each.counter_volume
  pubnub.publish(channel='channel', message= {'checkpoint_size': d, 'checkpoint_length': e, 'checkpoint_pause': f})

counterVolume(data_checkpoint_size, data_checkpoint_length, data_checkpoint_pause)

我只得到以下结果,而不是一系列的数据。检查点长度、检查点长度和检查点暂停是三种不同的米,它们是三种不同的数据流

^{pr2}$

Tags: 数据nameinfordatasizecounterlength
2条回答

每次调用each.counter_volume时都重写d、e和f。如果您希望最终获得大量返回数据的集合,则需要如下所示:

for i in range(data_checkpoint_size):
    d = data_checkpoint_size[i].counter_volume
    e = data_checkpoint_length[i].counter_volume
    f = data_checkpoint_pause[i].counter_volume
    pubnub.publish(channel='channel', message= {'checkpoint_size': d, 'checkpoint_length': e, 'checkpoint_pause': f})

值得注意的是,这假设所有数据集的长度都相等。为了得到更深入的答案,你需要提供一个更深入的问题,关于你想要达到什么目的。在

就像@ismailsunni说的,你的变量被重新分配了。这就假定所有数据的长度相同,但它应该有效:

def counterVolume(data_checkpoint_size, data_checkpoint_length, data_checkpoint_pause):
    for i, size in enumerate(data_checkpoint_size):
        length = data_checkpoint_length[i]
        pause = data_checkpoint_pause[i]
        message = {
            'checkpoint_size': size .counter_volume,
            'checkpoint_length': length.counter_volume,
            'checkpoint_pause': pause.counter_volume,
        }
        pubnub.publish(channel='channel', message=message)

我会先进行测试,以确保它们的长度都相同,然后引发一个特定的异常(这样更容易调试):

^{pr2}$

相关问题 更多 >

    热门问题