Ce code peut-il être plus court d'une manière ou d'une autre sans importer de modules?

def multiply_by2(li):
    new_list = []
    for i in li:
        new_list.append(i*1)
        new_list.append(i*2)
        new_list.append(i*3)
        new_list.append(i*4)
        new_list.append(i*5)
        new_list.append(i*6)
        new_list.append(i*7)
        new_list.append(i*8)
        new_list.append(i*9)
        new_list.append(i*10)
    return new_list

print(multiply_by2([5]))
0
Abdulrahman Zaytoun 31 août 2020 à 08:45

5 réponses

Meilleure réponse

J'ai créé un code pour vous.

def multiply_by2(li):
    new_list = [(j+1)*i for i in li for j in range(10)]
    return new_list
0
Ahmed Mamdouh 31 août 2020 à 05:52
def multiply_by2(li,range_needed):
    return [li*i for i in range(1,range_needed+1)] 
0
vgeorge 31 août 2020 à 06:11

Voici une façon de procéder

def multiply_by2(li,range_needed):
    new_list = []
    for i in range(1,range_needed+1):
      new_list.append(li*i)
    return new_list

print(multiply_by2(5,10))

0
Zain Sarwar 31 août 2020 à 05:51

Tu peux faire:

def multiply_by2(li, length=10):
    new_list = []
    for i in li: for j in range(1,length + 1): new_list.append(i * j)
    return new_list

print(multiply_by2([5]))

Mais on peut faire mieux, vous pouvez voir qu'il existe même un one-liner:

def multiply_by2(li, length=10): return [i * j for i in li for j in range(1,length + 1)]

print(multiply_by2([5]))
0
M Z 31 août 2020 à 05:51

Je ne sais pas si la fonction que vous avez créée fait ce qui est prévu en fonction de son nom, mais c'est une solution facile pour la rendre plus compacte. Si vous vouliez simplement multiplier tout dans la liste par deux, vous pouvez faire une boucle similaire à travers tous les li [i] et * = 2. J'espère que cela répond à votre question, mais ajoutez plus de détails sinon.

def multiply_by2(li):
    new_list = []
    for i in li:
        for j in range(1,11):
            new_list.append(i*j)
    return new_list
0
delta95 31 août 2020 à 05:49