我试图弄清楚如何计算两个不同数字(如2和3)之间交替的某个整数(作为范围)。这样输出将是2 5 7 10 12 15等。
我开始尝试改变一个简单的while循环,如下所示,取两个值:
a = 0
while a < 100:
a = a + 2 + 3
print(a, end=' ')
但它最终只计算到100乘以5.
我已经尝试了数字范围以及像itertools这样的循环和模块,试图找到一种方法来做到这一点,我完全被难倒了。
我在搜索之后执行了搜索,我所能找到的只是一个带有循环和范围的数字。
答案 0 :(得分:11)
您可以将itertools.cycle
用于此
import itertools
a = 0
it = itertools.cycle((2,3))
while a < 100:
a += next(it)
print(a)
输出
2
5
7
10
...
95
97
100
itertools.cycle
生成器只会在你调用它的时候连续循环遍历元组。
答案 1 :(得分:6)
添加两个内容后,您需要打印a
的内容,并在添加三个内容后
a = 0
while a < 100:
a = a + 2
print(a, end=' ')
if a < 100:
a = a + 3
print(a, end=' ')
话虽这么说,你可以更好地构建一个生成器,迭代地添加两个和三个交错:
def add_two_three(a):
while True:
a += 2
yield a
a += 3
yield a
然后,您可以打印生成器的内容,直到它达到100或更多:
from itertools import takewhile
print(' '.join(takewhile(lambda x: x < 100,add_two_three(0))))
答案 2 :(得分:2)
每次必须增加a
不同的值(2和3)。您可以在每次迭代时交换用于递增a
的两个值来实现此目的。
a = 0
inc1 = 2 # values being used to increment a
inc2 = 3
while a < 100:
a = a + inc1
inc1, inc2 = inc2, inc1 # swap the values
print(a, end=' ')
答案 3 :(得分:2)
只是为了好玩......
override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
let identifier: String
if indexPath.item == 1 {
identifier = trendingCellId
} else if indexPath.item == 2 {
identifier = subscriptionCellId
} else {
identifier = cellId
}
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: identifier, for: indexPath)
return cell
}
<强>输出强>
# Count from zero to 100, alternating between i and j
i, j = 2, 3
k = i + j
a = 0
while a < 100:
a += a % k and j or i
print(a, end=' ')
print()
答案 4 :(得分:2)
import numpy as np
np.cumsum([2,3] * 20)
答案 5 :(得分:0)
如果我理解正确,应该这样做:
a = 0
while a < 100:
a = a + 2
print(a, end=' ')
a = a + 3
print(a, end=' ')
您可以将这些值添加到列表中供以后使用,而不是打印。
答案 6 :(得分:0)
def createRange(a,end,step1,step2):
output=[]
while a < end:
a += step1
output.append(a)
if a < end:
a += step2
output.append(a)
return output
array = createRange(2,100,2,3)
print array
答案 7 :(得分:0)
使用if
语句,如下所示:
a = 0
i = 0
while a < 100:
if i % 2:
a = a + 3
else:
a = a + 2
i += 1
print(a, end=' ')
答案 8 :(得分:0)
你可以或多或少地做你正在做的事情,只需分开2和3的加法:
a = 0
while a < 100:
a = a + 2
print(a, end=' ')
if a > 97: # you don't actually need this because of how the numbers 2/3 work
break # but this will check if a will be >100 after addition of the second number
a = a +3
print(a, end=' ')
答案 9 :(得分:0)
这个简短的表达方式有效:
for a in (x // 10 for x in range(0,1000,25)):
print(a)
(但我不推荐)