Как вывести из массива элементов в Python каждую вторую пару элементов друг под другом, без запятых и скобок?
Мой массив выглядит так:
m=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
И я хочу напечатать в одном из случаев:
1 2
5 6
9 10
или в другом случае:
3 4
7 8
11 12
Я не знал, как это сделать, поэтому создал два отдельных массива, но когда я пытаюсь напечатать элементы в отдельных строках, каждая пара имеет скобки и запятую. Есть ли способ решить это проще и сделать так, как я написал?
Что я пробовал:
a=[m[j:j+2] for j in range(0,len(m),2)]
a1=m[::2]
a2=m[1::2]
if s1>s2:
print("\n".join(map(str,a1)))
elif s1<s2:
print("\n".join(map(str,a2)))
Мой текущий вывод:
[3, 4]
[7, 8]
[11, 12]
Вы можете использовать цикл while
m = [1,2,3,4,5,6,7,8,9]
idx = 0
try:
while idx < len:
print(m[idx], m[idx+1])
idx += 3
except IndexError:
print("Index out of bounds")
Просто измените начальный индекс (idx) для другой печати.
Большое спасибо! Он работает отлично! Для своей задачи я просто изменил idx +=4, а не 3. А в другом случае поставил idx=2, как вы сказали.
Рад помочь - извините за опечатку ;)
Другой способ сделать это так:
m=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
pairs = [[i, i+1] for i in m[::2]]
results = [], []
for i, e in enumerate(pairs):
results[i%2].append(e)
for i in results:
for p in i:
print(*p)
print("-----")
Выход:
1 2
5 6
9 10
-----
3 4
7 8
11 12
-----
Я не понимаю, почему все решения такие сложные, это так просто (случай 1):
len_m = len(m)
for i in range(0, len_m - 1 if len_m & 1 else len_m, 4):
print(f"{m[i]} {m[i + 1]}")
Для случая 2 просто начните range
с 2.
то, чего вы пытаетесь достичь, - это создать пару из 2 в массиве и сохранить альтернативную пару в другом массиве/списке. один из способов добиться этого приведен ниже кода, шаг за шагом.
m=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
make_pair = [(m[i], m[i+1]) for i in range(0, len(m), 2)]
res1 = []
res2 = []
print(make_pair)
# [(1, 2), (3, 4), (5, 6), (7, 8), (9, 10), (11, 12)]
for i in range(len(make_pair)):
if i%2:
res2.append(make_pair[i])
else:
res1.append(make_pair[i])
print(res1)
# [(1, 2), (5, 6), (9, 10)]
print(res2)
# [(3, 4), (7, 8), (11, 12)]
если вы хотите пойти за один раз, то есть без создания парного массива, то с помощью временного стека вы можете добиться того же результата
вы можете превратить список в строку и использовать метод замены, чтобы удалить скобки и запятые