只在偶数之间循环

2024-06-24 08:47:00 发布

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

我是新的编程,所以请原谅我,如果这是基本的。你知道吗

下面是我的部分代码提取主场和客场赔率从许多不同的博彩公司的篮球比赛。 如果我只是循环遍历范围中的每个元素,我会把主客场赔率都放在一列中,但是,我想要一个单独的主客场赔率列。你知道吗

num_page_items = len(odds)
for i in range(num_page_items):
    Home = (odds[2*i].text)
    Away = (odds[2*i-1].text)
print(Home,Away)

我想要的结果是显示主队的赔率旁边的客队赔率由逗号分隔。 我的代码实现了这一点,但是我认为这不是一个很好的方法,因为从技术上讲,它最终会遇到错误(即使我要处理的所有数据仍然会显示出来)。你知道吗

我该怎么清理? 谢谢


Tags: 代码texthome编程page公司itemsnum
3条回答
num_page_items = len(odds)
for i in range(0, num_page_items, 2):
    Home = odds[i].text  # Starts from 0, goes till num_page_items, incrementing by 2 (even indices)
for i in range(1, num_page_items, 2):
    Away = odds[i].text # Starts from 1, goes till num_page_items, incrementing by 2 (odd indices)

由于访问索引2*i处的元素,在索引2*i处迭代从0到列表大小的值,因此会遇到索引器错误。例如,如果大小是10,你最终会尝试访问赔率[2*i],因为i=5,6,7。。。,其索引超出范围

另一种方法是在for-loop内部检查i是奇数还是偶数。只是围绕着Shobhit Verma的答案。你知道吗

num_page_items = len(odds)
for i in range(num_page_items):
    if i % 2 == 0:                    #This is a sanity check to see if i is odd or even
        Home = odds[i].text
    else:
        Away = odds[i].text

您可以使用生成器表达式创建一个iterable,从odd对象中提取text属性,然后通过压缩iterable与自身进行配对,这样您就可以遍历iterable来解压缩HomeAway

i = (odd.text for odd in odds)
for Home, Away in zip(i, i):
    print(Home, Away)

相关问题 更多 >