#python #loops #integer
#python #циклы #целое число
Вопрос:
Давайте возьмем пример: у меня есть список: 1, 2, 3, 4, 5
я хочу добавить каждый элемент, который будет добавлен друг к другу. Например, 1 2, 1 3, 1 4, 1 5, 2 1, 2 3, 2 4, 2 5,
и так далее. Таким образом, на выходе должно получиться что-то вроде 3, 4, 5, 6, 3, 5, 6, 7
и так далее.
Может кто-нибудь, пожалуйста, помочь мне решить эту проблему?
Комментарии:
1. Покажите нам, что вы пробовали до сих пор
2. Используйте вложенный цикл for и продолжайте добавлять добавленное значение в список.
Ответ №1:
from itertools import starmap, permutations
from operator import add
values = [1, 2, 3, 4, 5]
print(list(starmap(add, permutations(values, 2))))
Вывод:
[3, 4, 5, 6, 3, 5, 6, 7, 4, 5, 7, 8, 5, 6, 7, 9, 6, 7, 8, 9]
>>>
Ответ №2:
используйте itertools.permutations
:
from itertools import permutations
my_list = [1, 2, 3, 4, 5]
new_list = [x y for x,y in permutations(my_list, 2)]
Вывод:
[3, 4, 5, 6, 3, 5, 6, 7, 4, 5, 7, 8, 5, 6, 7, 9, 6, 7, 8, 9]
Ответ №3:
Вы можете сделать что-то вроде этого.
def yar(int_list):
har = []
for num in int_list:
fiddly = []
for value in int_list:
add = num
add = value
fiddly.append(add)
har.append(fiddly)
return har
fee = [1, 2, 3, 4]
print(yar(fee))
# would output [[2, 3, 4, 5], [3, 4, 5, 6], [4, 5, 6, 7], [5, 6, 7, 8]]
Хлеб с маслом для решения этой проблемы — вложенный for
цикл. Для каждого числа в списке ( fee
в данном случае) перебирайте каждое число в списке fee
и добавляйте его к значению, хранящемуся во add
внешнем цикле, затем сохраняйте это значение в списке (то есть fidddly
).
Я добавил har
список, чтобы пользователи могли получать доступ к комбинациям с каждой итерации. (индекс 0 для комбинаций из 1, индекс 1 для комбинаций из 2 и т. Д.)
Вы можете каким-то образом сделать это пониманием списка, я почему-то уверен в этом. Я просто еще не очень хорошо разбираюсь в этом, но этот код все еще работает.
Ответ №4:
Если все ваши элементы различны, вы можете сделать это в понимании списка, чем добавляет каждое число со всеми числами, кроме самого себя:
L = [1, 2, 3, 4, 5]
S = [ a b for a in L for b in L if a!=b]
# [3, 4, 5, 6, 3, 5, 6, 7, 4, 5, 7, 8, 5, 6, 7, 9, 6, 7, 8, 9]
Если в списке могут быть повторяющиеся числа, то вам нужно исключить добавление чисел к самим себе на основе их индексов:
[ a b for i,a in enumerate(L) for j,b in enumerate(L) if i!=j]