我的目的是: 对于B中的每个元素,我想创建一个列表,其中包含列表B中的元素和列表A中的较小元素(比B元素)。
我尝试了两个for循环,但是,我不知道如何完成这项工作:
A=[1,2,3,4,5,6,7,8,9]
B=[3,4,5]
C=[]
for i in B:
for r in A:
if i>=r:
C.append(r)
我期待这样的结果:
[[3,1,2,3],[4,1,2,3,4],[5,1,2,3,4,5]]
有什么建议吗?
答案 0 :(得分:0)
试试这个:
for i in B:
new_list = [i] # inner list starting with the elmt from B
for r in A:
if i >= r:
new_list.append(r) # append to inner list
C.append(new_list) # finally append inner list to C
答案 1 :(得分:0)
您是否尝试在其中一个循环中使用数组:
A=[1,2,3,4,5,6,7,8,9]
B=[3,4,5]
C=[]
for b in B:
c = [b]
for a in A:
if a <= b:
c.append(a)
C.append(c)
print(C)
答案 2 :(得分:0)
如果你想在一行中写这个:
A=[1,2,3,4,5,6,7,8,9]
B=[3,4,5]
C=[[b] + [a for a in A if a <= b] for b in B]
print(C)
打印
[[3, 1, 2, 3], [4, 1, 2, 3, 4], [5, 1, 2, 3, 4, 5]]
答案 3 :(得分:0)
可以采用以下解决方案:
try:
A = [1, 2, 3, 4, 5, 6, 7, 8, 9]
B = [3, 4, 5]
D = []
a = sorted(A)
for b in B:
temp = [b]
temp.extend(a[0: a.index(b) + 1])
D.append(temp)
print(D)
except ValueError as e:
pass # Do something when value in B not found in a
答案 4 :(得分:0)
您可以对一行操作使用过滤器和列表推导
print [[i]+filter(lambda x: x <= i, A) for i in B]
结果
[[3, 1, 2, 3], [4, 1, 2, 3, 4], [5, 1, 2, 3, 4, 5]]
答案 5 :(得分:0)
这是您的代码
A=[1,2,3,4,5,6,7,8,9]
B=[3,4,5]
res=list()
for i in B:
C=list()
C.append(i)
for r in range(0,i):
C.append(A[r])
res.append(C)
print res,