我可以遍历所有1、2或3 6边骰子的组合,循环如下:
for a in range(1, 7): # one die
sum = a
dosomething(sum)
for a in range(1, 7): # two dice
for b in range(1, 7):
sum = a + b
dosomething(sum)
for a in range(1, 7): # three dice
for b in range(1, 7):
for c in range(1, 7):
sum = a + b + c
当可迭代程序的数量根据用户输入而变化时,有没有一种方法可以有效地将可变数量的输入输入到itertools.product()这样的程序中? 例如,下面的代码运行,但需要为每个循环显式定义: steps = np.linspace(0,100,21)
if len(elem_list) == 2:
for phase in itertools.product(steps,steps):
if round(round(phase[0],10)+round(phase[1],10),10)==100:
print(phase)
if len(el
我得到了一个列表,例如:[2,5,8]和一个值c,例如33。因此,因为列表的长度是3,所以我必须返回i*w[0] + j*w[1] + k*w[2] == c (33)的元组列表(i,j,k)。 当然,这很容易用3for循环解决,如下所示: res = []
for i in range(c+1):
for j in range(c+1):
for g in range(c+1):
if i*self.w[0] + j*self.w[1] + g*self.w[2] == c:
res.append((i,j,g))
re
我想使用map和/或filter函数来编写此代码。它返回列表中项目的索引,只要总和达到目标 我对此使用了列表理解,但不知道如何将第二个for循环放入map/filter函数中。如果我为map/filter函数的函数参数定义自己的函数,我不确定要使用的语法 num = [2,5,7,11,6,15,3,4]
tgt= 9
[num.index(x) for x in num for y in num if x + y == tgt] 结果: [0, 1, 2, 4, 6, 7]
例如,假设list_1 = [a,b,c]和list_2 = [m,n,o]。我希望将每个项目从一个列表比较到另一个列表,例如,创建一个输出列表,以便
[a == m, a == n, a == o, b == m, b == n, b == o...]
为了简单起见,我使用了==操作,但这也可能是一个求和。
[a + m, a + n, a + o, b + m...]
我知道如何用两个循环来完成这个任务,但是我想知道一个带有map()或list理解的lambda函数可以使用吗?我在网上搜索过,但只有一对一的比较列表项目,如map(lambda x,y: x + y, list_1, lis
我试图编写一个函数来创建独立向量列表的线性范围,但似乎最后计算出的向量覆盖了所有其他元素。如果有人能帮我修好那就太好了。
def span_generator(liste,n):
"""function to generate the span of a list of linear independent
vectors(in liste) in the n-dimensional vectorspace of a finite
field with characteristic 2, returns a list of all eleme
我被一个看似简单的问题困住了,有人能帮忙吗?
我有两个列表a和b。我可以将列表中的元素称为a[i][j],其中0<i<100和0<j<100。
我想找到所有的a[i][j] - b[k][l],0<i<100, 0<j<100, 0<k<100和0<l<100。然后对所有的置换进行求和( of i, j, k, l )。
有人知道一个优雅的简单的方法吗??
我写了一个程序一起掷骰子。它的工作方式是,我传递的骰子,我想滚到主要功能,[4, 6]又名4边骰子和6边骰子。然后,该程序生成两个列表,其中包含每个骰子的所有可能结果。
[1, 2, 3, 4, 5, 6] and [1, 2, 3, 4]
然后,我列出了所有可能的结果,然后在两个列表之间添加每一个数据组合。这是我的密码
#list of outcomes from current dice rolling - to contain sublists within it for each dice
rawDiceOutcomes = []
#list of total outcomes to
我的代码是: import itertools
a = [*range(22)], [*range(22)], [*range(22)], [*range(22)]
combination = [seq for seq in itertools.product(*a) if sum(seq) <= 21]
print(combination)
lst1 = [item[0] for item in combination]
lst2 = [item[1] for item in comb
我正在编写python脚本,其中有多个for循环,除了嵌套在其中的for循环的数量之外,它们都是相同的。
让我告诉你我的意思:
#4 & 1
for a1 in someList:
for a2 in someList:
for a3 in someList:
for a4 in someList:
for b1 in anotherList:
resultList.append((a1 + a2 + a3 + a4) - b1);
#3 & 1
for a
我想让我的程序找到x整数的组合,其值在一个等于给定数目的范围内。
例如:我想要找到3个整数的组合,它们的值可以在0到2之间,并且求和等于5。
possibilities = []
total = 5
valueRange = 3
for num1 in xrange(valueRange):
for num2 in xrange(valueRange):
for num3 in xrange(valueRange):
if num1 + num2 + num3 == total:
possibilities.app
我有两个列表,并希望生成一个符合以下条件的组合:
a = [1,7,12,50,51,52,57,59,60,61,67,96,59,58]
b = [1,2,3,...200]
combination_a = [(p,q,r) for p in a for q in a for r in a]
combination_b = [(p,q,r) for p in b for q in b for r in b
if (p,q,r) not in combination_a]
print (combination_b)
在处理大量数据时,
我正在尝试寻找所有可能的组合,其中3个变量可以等于某个特定的数字。
x = (10,11,12,13,14,15)
y = (10,11,12,13,14,15)
z = (10,11,12,13,14,15)
answer = 45
我该如何使用itertools来查找每个组合
x + y + z = 45
在本例中,我希望python打印(15,15,15),但是,如果答案是=到一个不同的数字,比如30,它将打印x,y,z的每一个组合,当添加时x,y,z的组合= 45。
如果是n=1,我想写:
for a1 in range(-10,10,1):
if 13*a1 == 1:
print('Success')
如果是n=2,我想写:
for a1 in range(-10,10,1):
for a2 in range(-10,10,1):
if 13*a1+27*a2==1:
print('Success')
如果是n=3,我想写:
for a1 in range(-10,10,1):
for a2 in range(-10,10,1):
我只是在玩一些代码,但它似乎有特定数量的变量硬编码。我想知道如何使用未知数量的变量。
这里有一个有问题的代码示例来澄清(它本身不起作用,只是从一个更大的代码库中去掉了它,以显示我的意思):
def test(a,b,c,current_total):
a_range = range(0, target_sum + 1, a)
b_range = range(0, target_sum + 1, b)
c_range = range(0, target_sum + 1, c)
for i, j, k in itertools.product(a_range, b_
下面的函数生成输入列表的笛卡儿积。
当最后两个数字为偶数时,如何使它只产生结果?
我只是想看看一个例子,说明如何正确地将逻辑添加到这类函数中。
def product(ar_list):
if not ar_list:
yield ()
else:
for a in ar_list[0]:
for prod in product(ar_list[1:]):
out= (a,)+prod
yield out
ar_list=[[1,2],[3,4],[5,6,
我想把元素合并到不同的列表中。例如,这里有3个列表。
list_a : [ 1,2,3 ]
list_b : [ 4,5,6 ]
list_c : [ 7,8 ]
从list_b和list_c中选择元素是相互排斥的。当包含来自list_b的元素时,我也希望包含来自list_bb的元素;当包含来自list_c的元素时,我也希望包含来自list_cc的元素。
list_bb : [ 14,15,16 ]
list_cc : [ 17,18 ]
我写了这段代码:
global sum_list=[]
for a in list_a:
for b in list_b:
for
kk是存在的列表的数量。l1、l2、l3是列表。在下面的代码中,我使用3 for循环在3个列表中添加元素。变量k的值可能会有所不同,因此列表也会发生变化。我想知道如何使用递归来实现这一点。
kk = 3
l1 = [8,5,4]
l2 = [3,11,9]
l3 = [5,9,15,8]
maxi = []
for i in l1:
for j in l2:
for k in l3:
maxi.append(i+j+k)
我有一个数据列表,我试图从python中找到最大值。我的当前代码将遍历数据并呈现数据的所有可能组合,但是我无法从结果中找到如何呈现最大值。
下面是我当前的设置:
street = %sql SELECT * FROM streets
for i in range(len(flight)):
for j in range(len(flight)):
for k in range(len(flight)):
A = flight[i][2]
B = flight[k][2]
num = flight
我正在用Python做一个练习程序,用一组给定的盘子来计算我可以放在架子上的所有不同的重量。
def Weights(t=1,f=1,tn=1,tf=1,thf=1,ff=1,b=45):
Max=b+5*t+10*f+20*tn+50*tf+70*thf+90*ff
Poss=range(b,Max+1,5)
ts=(list((i*5 for i in range(0,t+1))))
fs=(list((i*10 for i in range(0,f+1))))
tns=(list((i*20 for i in range(0,tn+1))))
tfs=(lis
我如何使用迭代工具或有效地完成它?这个列表的长度是557845。
#Generate all combinations of 4 elements and put on list
listLol=list(map("".join, itertools.combinations('1234567890abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ',4)))
#This is too slow
for a in listLol:
for b in listLol:
我有一个整数列表,比如l1=[a,b,c]和_1to9=range(1,10)。我想得到这个:
[a*i1+b*i2+c*i3 for i1 in _1to9 for i2 in _1to9 for i3 in _1to9]
但问题是,l1不一定是一个包含3个元素的列表。那么我该如何概括呢?
编辑:帮助可视化我正在努力实现的目标:
>>> l1=[10001,1010, 100]
>>> [l1[0]+i1+l1[1]*i2+l1[2]*i3 for i1 in _1to9 for i2 in _1to9 for i3 in _1to9]
我正在尝试计算长度为5且恰好有两个重复的数字的数量(其中0可以是前导,如00123)。我做了什么: def checkNumber(num):
temp = [0] * 10
for d in map(int, str(num)):
temp[d] += 1
contains_two_unique_digits = False
for d in temp:
if d > 2:
return False
if d == 2:
if contains_two_un