Python 只能循环通过偶数

Python 只能循环通过偶数,python,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) 我想要的结果是在

我是编程新手,如果这是基本的,请原谅我

下面是我从许多不同的收受赌注者那里提取篮球比赛主客场赔率代码的一部分。 如果我只是循环遍历范围中的每个元素,我会在一列中留下主客场赔率,但是,我希望主客场赔率有一个单独的列

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)
我想要的结果是在主队赔率和客队赔率旁边显示主队赔率,用逗号分隔。 我的代码实现了这一点,但是我认为这不是一种很好的方法,因为它在技术上最终会遇到错误(即使我要处理的所有数据仍然显示)

我该怎么清理? 谢谢


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

您可以使用生成器表达式创建一个iterable,从
奇数
对象中提取文本属性,然后通过压缩iterable与自身进行配对,这样您就可以通过迭代来解包
Home
远离

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

另一种方法是在
for循环中检查
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

标准模块
操作符
中的
itemgetter
用于选择列表内容。快速,适合常规选择

从操作员导入itemgetter
赔率=[1,2,3,4,5,6]
num_page_items=len(赔率)
getHome=itemgetter(*范围(0,num\u page\u items,2))
getAway=itemgetter(*范围(1,num\u page\u items,2))
回家=回家(赔率)
逃走=逃走(赔率)
打印(主页)
打印(带走)
输出:

(1, 3, 5)
(2, 4, 6)

什么是
赔率
值?由于计数时间过长,您遇到了错误。那么,该怎么办?不要数到最后。只计算一半。重新格式化代码,因为它会有
IndentationError
。至少
类型(赔率)
(1, 3, 5)
(2, 4, 6)