Python: добавление элемента в список по индексу с тем же значением - PullRequest
0 голосов
/ 03 января 2019

У меня есть список, содержащий количество целых и добавляющий их во второй список с индексом, соответствующим их значению.Во втором списке уже есть корзина, заполненная заполнителями ("X").то есть:

firstlist = [2, 3, 5]

с выводом:

secondlist = ['X', 'X', 2, 3, 'X', 5, 'X', 'X']

Каков наилучший способ сделать это?Любая помощь с благодарностью!

Ответы [ 4 ]

0 голосов
/ 29 июля 2019

Допустим, вам нужно создать функцию YourFunc(inputlist,length), где inputlist аргумент - это список для ввода, а length - аргумент для длины списка для вывода.Итак, согласно вашему вопросу, inputlist=[2,3,5] и length=8.

def YourFunc(inputlist,length):
        out=[]
        for X in range (0,length):
                if inputlist.count(X)==1:
                         out.append(X)
                elif inputlist.count(X)==0:
                         out.append('X')
        print(out)

YourFunc([2,3,5],8)

Итак, я обычно так и делаю.В этой функции цикл работает от 0 до length.Если элемент is отсутствует в inputlist, то 'X' вставляется в список вывода out.Если нет, то номер в цикле вставляется.

0 голосов
/ 03 января 2019

Вы ищете что-то простое, как это:

firstlist = [2, 3, 5]
secondlist = ['X']*10

for index in firstlist:
    secondlist[index] = index

print(secondlist)
# ['X', 'X', 2, 3, 'X', 5, 'X', 'X', 'X', 'X']

Может иметь dict для firstlist с индексами для key и значением, которое вы хотите поместить в values для dict.

0 голосов
/ 03 января 2019

Вы можете использовать .insert (), если хотите сохранить материал, который уже есть во втором списке.

firstlist = [2, 3, 5]
secondlist = ['X', 'X', 'X', 'X', 'X']

for x in range(len(firstlist)):
    secondlist.insert(firstlist[x], firstlist[x])

print(secondlist)
0 голосов
/ 03 января 2019

Это возьмет аргумент списка и поместит их в новый список, который будет возвращен функцией.

def list_fill(first_list, fill, length=None):
    return [(i if i in first_list else fill) for i in (range(max(first_list) + 1) if length is None else range(length))]

Как работает list_fill:

Аргумент first_list включаетизменяемые индексы.
Аргумент fill - это то, какими должны быть пустые места.
Третий необязательный аргумент length указывает длину вывода.Если оставить это поле пустым, он примет максимальный индекс, указанный в first_list.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...