3 Вопрос: Как дублировать элементы массива

вопрос создан в Thu, May 2, 2019 12:00 AM

У меня есть массив, который снова содержит массивы. Теперь я хотел бы иметь каждый внутренний массив дважды в моем основном массиве.

К сожалению, когда я поступил так, как я сделал, я испортил индекс и не смог изменить конкретный элемент в массиве (пример: Payliketable[2][5]), потому что это время сервировки.

Как я могу дублировать каждый внутренний массив, давая каждому свой собственный "индекс"?

i = 1
while i < len(PaylikeTable):
        PaylikeTable.insert(i,PaylikeTable[i])
        i += 2

Как уже говорилось, массив "Payliketable" снова состоит из массивов.

    
- 2
  1. Что дает PaylikeTable.shape?
    2019-05-02 15: 14: 16Z
  2. @ yatu Когда я добавляю это, я немедленно получаю сообщение об ошибке "экземпляр списка не имеет элемента формы"
    2019-05-02 15: 24: 44Z
  3. Что такое внутренний массив? Можете ли вы привести пример Payliketable @scenatic
    2019-05-02 15: 54: 17Z
  4. Они являются массивами или простыми списками?
    2019-05-02 16: 08: 22Z
3 ответа                              3                         

Вы хотели дублировать каждый элемент в массиве?    Для этого просто добавьте массив с таким же массивом

   list1=[[1,2,3],[5,6,7]]
   list1+list1 will get
   [[1,2,3],[5,6,7],[1,2,3],[5,6,7]]
    
0
2019-05-02 15: 25: 57Z
  1. К сожалению, до сих пор существует проблема, заключающаяся в том, что в "doubled_list" есть дубликаты с одинаковым индексом. Например, если я изменю doubled_list [3] [5], тогда он попадет в оба дубликата
    2019-05-02 15: 41: 55Z

Во-первых, никогда не изменяйте список при его повторении. Должны быть лучшие способы сделать это.

Чтобы понять, что я объяснил, проверяйте текущий список после каждой итерации вручную с помощью удобоваримого начального списка, например [[1], [2], [3]]. Вы легко увидите, что происходит не так.

При условии отсутствия ограничений памяти лучше создать еще один список:

doubled_list = []
for item in single_list:
    doubled_list.extend([list(item), list(item)])

использование list() создает копию item, а использование item напрямую ссылается на тот же экземпляр item.

Дополнительная информация: Копирование списка

    
0
2019-05-02 16: 03: 59Z
  1. К сожалению, до сих пор существует проблема, заключающаяся в том, что в "doubled_list" есть дубликаты с одинаковым индексом. Например, если я изменю doubled_list [3] [5], тогда он попадет в оба дубликата
    2019-05-02 15: 41: 40Z
  2. Правильно, я не понял вашего требования. Я редактировал с объяснением
    2019-05-02 16: 02: 26Z

Списки являются изменчивыми. Смотрите здесь для получения дополнительной информации о изменяемых и неизменяемых .

Чтобы создать копию изменчивого файла (а не просто ссылку на него), лучше всего использовать copy .

import copy

PaylikeTable = [[1, 2, 3], [2, 4, 6], [5, 6, 2]]

i = 0
lpt = len(PaylikeTable)*2
while i < lpt:
    PaylikeTable.insert(i, copy.deepcopy(PaylikeTable[i]))
    i += 2

print(PaylikeTable) #the doubled list
#[[1, 2, 3], [1, 2, 3], [2, 4, 6], [2, 4, 6], [5, 6, 2], [5, 6, 2]]

PaylikeTable[3][1] = 99

print(PaylikeTable) #only element 3, 1 is edited.
#[[1, 2, 3], [1, 2, 3], [2, 4, 6], [2, 99, 6], [5, 6, 2], [5, 6, 2]]
    
0
2019-05-02 16: 26: 42Z
источник размещен Вот