我目前正在使用嵌套的for循环一次将数据添加到两个列表。请参见下面的代码。
headers,在下面的代码中是一个漂亮的soup对象。
openData = []
count = 0
openC = 7
closeData = []
closeC = 10
for j in headers:
for z in j:
for data in z:
count += 1
if count == 1:
openData.append(data)
elif count == openC:
openData.append(data)
openC += 6
if count == 4:
closeData.append(data)
elif closeC == count:
closeData.append(data)
closeC += 6这里的两个列表是openData和closeData。作为一个粗略的例子,我知道我可以这样做
openData = [data for j in headers for z in j for data in z]
closeData = [data for j in headers for z in j for data in z]我担心这会花费大约两倍的时间,因为循环操作要执行两次。但是有没有一种方法可以把这两个语句结合起来,比如
openData, closeData = [list comprehension]我还对如何将if,elif逻辑融入到列表理解中感到困惑。最后,这是我应该做的事情吗?或者这样做是对列表理解的滥用。我写的上面的代码可以工作,但是看起来很难看。我的目标是比我所拥有的更好的代码。
发布于 2018-07-18 04:04:36
我的尝试(使用一些基本的初始数据):
#some initial data
data = list(range(20))
openData, closeData = data[1::6], data[4::6]
print(openData, closeData)打印:
[1, 7, 13, 19] [4, 10, 16]https://stackoverflow.com/questions/51389298
复制相似问题