Для обновленному Вопрос:
Предположим, у вас есть "список списков строк", как показано ниже:
s = [['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h', 'i'], ['j', 'k', 'l']]
Затем вы можете использовать: Присоединиться к объединению:
>>> for i in range(len(s)):
... [s[i], map(lambda t: ''.join(t), zip(*s[i + 1:]))]
...
[['a', 'b', 'c'], ['dgj', 'ehk', 'fil']]
[['d', 'e', 'f'], ['gj', 'hk', 'il']]
[['g', 'h', 'i'], ['j', 'k', 'l']]
[['j', 'k', 'l'], []]
Если вам не нужна последняя строка вывода, то просто использовать аргумент диапазона менее одной длины:
>>> for i in range(len(s)-1):
... [s[i], map(''.join, zip(*s[i + 1:]))] # remove lambda function
...
[['a', 'b', 'c'], ['dgj', 'ehk', 'fil']]
[['d', 'e', 'f'], ['gj', 'hk', 'il']]
[['g', 'h', 'i'], ['j', 'k', 'l']]
Но предположим, что если у вас есть «список списков чисел», например:
l = [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]]
Затем вы можете использовать функцию сумма:
>>> for i in range(len(l) - 1):
... [l[i], map(sum, zip(*l[i + 1:]))]
...
[[1, 2, 3], [21, 24, 27]]
[[4, 5, 6], [17, 19, 21]]
[[7, 8, 9], [10, 11, 12]]
Edit: ..
Если вы хотите сделать одиночную функцию для обеих строк и цифр, вы можете использовать команду add()
из библиотеки operator
.
Проверить add()
функция:
>>> from operator import add
>>> add(1, 2)
3
>>> add('1', '2') # this is like + works
'12'
Теперь, используя это сделать новый my_add()
, что добавить все элементы в последовательности, проверьте следующие коды:
>>> def my_add(t):
... return reduce(add, t)
...
>>> my_add(('a', 'b'))
'ab'
>>> my_add((2, 1))
3
Теперь напишем функцию, используя my_add()
функцию что сделает вашу работу:
def do_my_work(s):
for i in range(len(s)-1):
print [s[i], map(my_add, zip(*s[i + 1:]))]
Теперь посмотрим, как это сработает для вас:
>>> s
[['a', 'b', 'c'], ['d', 'e', 'f'], ['g', 'h', 'i'], ['j', 'k', 'l']]
>>> do_my_work(s)
[['a', 'b', 'c'], ['dgj', 'ehk', 'fil']]
[['d', 'e', 'f'], ['gj', 'hk', 'il']]
[['g', 'h', 'i'], ['j', 'k', 'l']]
>>> l
[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]]
>>> do_my_work(l) # so same function for str and int both!
[[1, 2, 3], [21, 24, 27]]
[[4, 5, 6], [17, 19, 21]]
[[7, 8, 9], [10, 11, 12]]
Что означает '+' здесь? – PascalVKooten
Я с PascalvKooten, добавляем ли мы значения вместе или просто добавляем переменные в разные позиции списка? –
Вы только что отредактировали свой вопрос в течение льготного периода? Я мог бы поклясться, что там не было никаких «+» вещей, когда я написал свой ответ ... – ThiefMaster