Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
211 views
in Technique[技术] by (71.8m points)

python - Iam looping through one array and printing frequency as in the second arrary, for loop works fine, however when same code in function not work

arr1 = [6,12,8,10,20,16]
arr2 = [5,4,3,2,1,5]

arrn=[]
for i in range(len(arr1)):
    for j in range((arr2[i])):
        arrn.append(arr1[i])
print(arrn)


output [6, 6, 6, 6, 6, 12, 12, 12, 12, 8, 8, 8, 10, 10, 20, 16, 16, 16, 16, 16]

Above code works fine, but when put in function it doesn't work Please advise where iam going wrong Here iam try to distribute arr1 as per frequency in arr2 respective elements, it prints fine, but function is return improper result


x = [6,12,8,10,20,16]
y = [5,4,3,2,1,5]
n = len(x)


def defreq(a,b):
    arrn = []
    for i in range(n):
        print(i,[a[i]],b[i])
        arrn += [a[i]] * b[i]
        return arrn

print(defreq(x,y))

[6, 6, 6, 6, 6]
question from:https://stackoverflow.com/questions/65938039/iam-looping-through-one-array-and-printing-frequency-as-in-the-second-arrary-fo

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

Your return is within the for loop, and your logic in the function is different to your earlier code outside the function.
Here is the corrected code:

x = [6,12,8,10,20,16]
y = [5,4,3,2,1,5]
n = len(x)

def defreq(a,b):
    arrn = []
    for i in range(len(a)):
        for j in range((b[i])):
            arrn.append(a[i])
    return arrn

print(defreq(x,y))

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

2.1m questions

2.1m answers

60 comments

56.8k users

...