Listeyi yazdırmak yerine return etmek

def generate(row,column):
   
    a = row*column
    b = []
    for i in range(a):
        b.append(i)
    seq=b
    num=column    

    avg = len(seq) / float(num)
    out = []
    last = 0.0

    while last < len(seq):
        out.append(seq[int(last):int(last + avg)])
        last += avg
    
    for row in out:
        print(' '.join([str(elem) for elem in row]))
    
    return 
     

d = generate(5, 5)
print(d)


        
     
        

        

Bu kodu python da çalıştırdığınız zaman 0 1 2 3 4
5 6 7 8 9
şeklinde değerleri print ediyor.Fakat ben bu değerleri return etmesini istiyorum ve return ederken de aynen yukarıda olduğu gibi döndürmesini istiyorum.Ama bu değeri return ettiremedim

Foruma hoş geldiniz :partying_face:

O şekilde return etmek istiyorsanız, bu değerleri tek bir string içerisinde return edebilirsiniz.
Öbür türlü bir çeşit matrix return etmeniz gerekecek.

Şunun gibi:

def generate(row,column):
    matrix = []

    for r in range(row):
        matrix.append([])
        for c in range(column):
            matrix[r].append(c + (column * r))

    return matrix

d = generate(5, 5)
print(d)

# alt alta yazdırmak için:
# for row in d:
#     print(row)
[[0, 1, 2, 3, 4],
 [5, 6, 7, 8, 9],
 [10, 11, 12, 13, 14],
 [15, 16, 17, 18, 19],
 [20, 21, 22, 23, 24]]

String olarak:

def generate(row,column):
    string = ""

    for r in range(row):
        string += "\n"
        string += " ".join(str(c + (column * r)) for c in range(column))

    return string[1:]  # Fazlalık'\n' kısmını kırparak return ediyoruz.

d = generate(5, 5)
print(d)
0 1 2 3 4
5 6 7 8 9
10 11 12 13 14
15 16 17 18 19
20 21 22 23 24
1 Beğeni