Объединение значений в массиве в Python

#python

#python

Вопрос:

У меня есть такой массив: [‘A’, ‘B’, ‘C’, ‘D’, ‘E’] .

Я пытался выяснить, как сделать это так: [‘AB’, ‘CD’, ‘E’]

Я не уверен, с чего начать. Заранее спасибо!

Комментарии:

1. попробуйте использовать for n in range(0,len(array)): newarray[n//2] = array[n]

2. The grouper рецепт из itertools документация предоставляет достойное решение

3. @Iain Shelvington Я думаю, что мы должны ответить, а не просто задать вопрос. Может быть, он / она просто не мог понять, где найти

Ответ №1:

main.py

 a = ['A', 'B', 'C', 'D', 'E']
b = [i   j for i, j in zip(a[:-1:2], a[1::2])]
if len(a) % 2 == 1:
  b.append(a[-1])
print(b)

  

Результат

 $ python main.py
['AB', 'CD', 'E']
  

Комментарии:

1. Спасибо, я понял этот вопрос. Исправлено и обновлено.

2. Спасибо за проверку. исправлено, но ваш ответ намного лучше для чтения и эффективности вычислений

3. Вы могли бы сделать свой, возможно, немного красивее zip(a[::2], a[1::2] ['']) , хотя это менее эффективно.

Ответ №2:

 >>> [''.join(a[i:i 2]) for i in range(0, len(a), 2)]
['AB', 'CD', 'E']
  

или (как я люблю итераторы)

 >>> it = iter(a)
>>> [s   next(it, '') for s in it]
['AB', 'CD', 'E']
  

Комментарии:

1. Вау, огромное спасибо! Я действительно ценю это

Ответ №3:

Я думаю, что более простой способ — выполнить итерацию по массиву и объединить символы, это работает, если у вас есть массив с четной длиной, поэтому вы можете добавить проверку и добавить последний элемент в случае нечетной длины.

 array = ['A', 'B', 'C', 'D', 'E']

array2 = [f"{array[i]}{array[i 1]}" for i in range(0, len(array)-1, 2)]

if len(array)%2!=0:
    array2.append(array[-1])

print(array2)
  

Ответ №4:

Попробуйте вот так. Это очень простой ответ, но он должен работать.

 my_array =  ['A', 'B', 'C', 'D', 'E']

def combine_array(my_array):
    mixed_array = []
    start_new = True
    for item in my_array:
        if start_new:
            mixed_array.append(item)
            start_new = False
        else:
            mixed_array[-1] = mixed_array[-1]   item
            start_new = True
    return mixed_array


if __name__ == "__main__":
    try:
        print(combine_array(my_array))
    except Exception as err:
        print(err)
  

Комментарии:

1. Может кто-нибудь объяснить, почему я получил минус ?! Этот ответ протестирован и работает.

2. Возможно, кому-то не понравилось количество кода. Мне это тоже не нравится, но это правильно, эффективно и просто, поэтому я поддержал.

Ответ №5:

 startArray = ['A', 'B', 'C', 'D', 'E']
currentIndex = 0
finishArray = ['']
for x in startArray:
    if len(finishArray[currentIndex]) == 2:
        currentIndex  = 1
        finishArray.insert(currentIndex,x)
    else: 
        finishArray[currentIndex]  = x
print(finishArray)