#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)