我是编程新手,所以请原谅我。
以下是我的代码的一部分,该代码用于从许多不同的博彩公司中提取篮球比赛的主场和客场赔率。 如果我只遍历范围内的每个元素,那么我在一列中就留有本垒打和赔率的赔率,但是,我想要一列关于本垒打和赔率的赔率。
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)
我想要的结果是在主队的赔率旁边显示主队的赔率,并用逗号分隔。 我的代码实现了这一点,但是我认为这并不是一个好方法,因为从技术上讲,它最终会出错(即使我仍在显示的所有数据仍然显示)。
我该如何清理? 谢谢
答案 0 :(得分:2)
您可以使用生成器表达式创建一个Iterable,以从odd
对象中提取文本属性,然后通过将Iterable与自身进行压缩来进行配对,以便您可以对其进行迭代以解压缩{{1} }和Home
:
Away
答案 1 :(得分:0)
$userName
由于您访问索引2 * i处的元素,因此遇到了IndexError,其中i遍历了从0到列表大小的值。例如,如果大小为10,您将最终尝试访问i = 5、6、7 ...的odds [2 * i],其索引超出范围
答案 2 :(得分:0)
另一种可行的方法是在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
答案 3 :(得分:0)
标准模块itemgetter
中的operator
用于选择列表内容。快速,适合常规选择。
from operator import itemgetter
odds=[1,2,3,4,5,6]
num_page_items = len(odds)
getHome = itemgetter(*range(0,num_page_items,2))
getAway = itemgetter(*range(1,num_page_items,2))
Home = getHome(odds)
Away = getAway(odds)
print(Home)
print(Away)
输出:
(1, 3, 5)
(2, 4, 6)