Ինչպե՞ս զուգակցել տարրերը հետևի տարրերի հետ Matrix Row-ում՝ օգտագործելով Python-ը:


Ծրագրավորման որոշ սցենարներում դուք կարող եք հանդիպել մի ժամանակի, երբ անհրաժեշտ է մատրիցաների յուրաքանչյուր տարր անընդմեջ զուգակցել հետևի տարրի հետ, այլ կերպ ասած այն տարրին, որը հայտնվում է թվից անմիջապես հետո: Այսպիսով, այս հոդվածում մենք կդիտարկենք որոշ մեթոդներ և օրինակներ՝ տարրերը պայմաններին համապատասխան զուգակցելու համար:

Մատրիցա

Սրանք հզոր տվյալների կառուցվածքներ են, որոնք օգտագործվում են տողերում և սյունակներում կազմակերպված տարրերի հավաքածուները ներկայացնելու համար: Ինչպես մատրիցը, որն ունի n տող և m սյունակ, կկոչվի n * m մատրիցա:

Ահա մի քանի մեթոդներ, որոնք մենք կարող ենք կատարել մատրիցայի տարրերը զուգակցելու համար:

Nested Loop

Սա պարզ և առաջնային մեթոդ է, որը գալիս է մշակողի մտքում: Այստեղ մենք կարող ենք օգտագործել nested loops մատրիցի յուրաքանչյուր տողի վրա կրկնելու համար: Ներքին օղակում մենք կրկնում ենք տողի առաջին տարրից մինչև երկրորդից մինչև վերջին տարրը, քանի որ վերջինից հետո հաջորդ տարր չկա: curr և nxt փոփոխականները պահում են ընթացիկ տարրը և դրան հաջորդող տարրը, որը հետևի տարրն է:

Օրինակ


mat= [
   [1, 2, 3],
   [4, 5, 6],
   [7, 8, 9]
]
def pair_with_rear(mat):
   for row in mat:
   for i in range(len(row) - 1):
      curr = row[i]
      nxt = row[i + 1]
      print(f"Pair: {curr} - {nxt}")

pair_with_rear(mat)

Ցուցակի ըմբռնում

Այս մեթոդը օգտագործում է ցուցակի ըմբռնումը զույգ տարրեր ստեղծելու համար: Այս ըմբռնումը անցնում է մատրիցի յուրաքանչյուր տողի վրա և յուրաքանչյուր տողում այն զուգավորում է յուրաքանչյուր տարրը հետևի տարրի հետ՝ օգտագործելով (տող[i], տող[i+1]), որը պահվում է զույգերի ցանկում:

Օրինակ


mat = [
   [1, 2, 3],
   [4, 5, 6],
   [7, 8, 9]
]

def pair_with_rear(mat):
   pairs = [(row[i], row[i + 1])
   for row in mat
   for i in range(len(row) - 1)]

   for pair in pairs:
      print(f"Pair: {pair[0]} - {pair[1]}")

pair_with_rear(mat)

Արդյունք


Pair: 1 - 2
Pair: 2 - 3
Pair: 4 - 5
Pair: 5 - 6
Pair: 7 - 8
Pair: 8 - 9

Ցանկի սեղմման և զիփի մեթոդը

Այս մեթոդը օգտագործում է zip() ֆունկցիան ցուցակի ընկալման հետ համատեղ՝ յուրաքանչյուր տողի տարրը զուգակցելու համար: Այս ֆունկցիան վերցնում է տարրը յուրաքանչյուր կրկնությունից (ներքևում գտնվող ծրագրում դա ընթացիկ տող է և կտրատված շարքը երկրորդ դիրքի տարրերի հետ) և դրանք միավորում է զույգերի, որոնք պահվում են զույգերի ցանկում:

Օրինակ


mat = [
   [1, 2, 3],
   [4, 5, 6],
   [7, 8, 9]
]

def pair_with_rear(mat):
   pairs = [(curr, nxt)
   for row in mat
   for curr, nxt in zip(row, row[1:])]
   for pair in pairs:
      print(f"Pair: {pair[0]} - {pair[1]}")
pair_with_rear(mat)

Pair: 1 - 2
Pair: 2 - 3
Pair: 4 - 5
Pair: 5 - 6
Pair: 7 - 8
Pair: 8 - 9

NumPy գրադարան

Մենք օգտագործում ենք NumPy գրադարանը մատրիցայի արդյունավետ գործընթացի համար: Նախ, մենք հարթեցրինք մատրիցը, որպեսզի այն վերածենք 1D զանգվածի, օգտագործելով np.array(mat).flatten(): Այնուհետև օգտագործելով ցուցակի ըմբռնումը, մենք զույգեր ենք ստեղծում՝ կրկնելով հարթեցված զանգվածի վրա և յուրաքանչյուր տարր զուգակցում իր հետևի կամ հաջորդ տարրի հետ:

Օրինակ


import numpy as np
mat = [
   [1, 2, 3],
   [4, 5, 6],
   [7, 8, 9]
]
def pair_with_rear(matrix):
   flattened_matrix = np.array(matrix).flatten()
   pairs = [(flattened_matrix[i], flattened_matrix[i + 1])

   for i in range(len(flattened_matrix) - 1)]
   for pair in pairs:
      print(f"Pair: {pair[0]} - {pair[1]}")

pair_with_rear(mat)

Արդյունք


Pair: 1 - 2
Pair: 2 - 3
Pair: 3 - 4
Pair: 4 - 5
Pair: 5 - 6
Pair: 6 - 7
Pair: 7 - 8
Pair: 8 - 9

Itertools Linerary

Մենք օգտագործում ենք Itertools գրադարանը՝ զուգակցման գործողությունները կարգավորելու համար: Այս մեթոդի Numpy Library մոտեցման նման, մենք նաև հարթեցնում ենք զանգվածը 1D մատրիցի մեջ և միացնում մատրիցայի բոլոր տողերը մեկ 1D կրկնվող զանգվածի մեջ: Այնուհետև, օգտագործելով ցուցակի ընկալումը, զույգերը ստեղծվում են՝ կրկնելով հարթեցված ցուցակը, որտեղ ընթացիկ տարրը նշվում է flatten_mat[i]-ով, իսկ հաջորդ տարրը նշվում է flatten_mat[i+1-ով: ]որը պահվում է զույգերի ցանկում:

Օրինակ


import itertools
mat = [
   [1, 2, 3],
   [4, 5, 6],
   [7, 8, 9]
]

def pair_with_rear(matrix):
   flattened_matrix = list(itertools.chain.from_iterable(matrix))
   pairs = [(flattened_matrix[i], flattened_matrix[i + 1])
   for i in range(len(flattened_matrix) - 1)]
   for pair in pairs:
      print(f"Pair: {pair[0]} - {pair[1]}")
pair_with_rear(mat)

Արդյունք


Pair: 1 - 2
Pair: 2 - 3
Pair: 3 - 4
Pair: 4 - 5
Pair: 5 - 6
Pair: 6 - 7
Pair: 7 - 8
Pair: 8 - 9

Այսպիսով, դուք կարող եք ընտրել ցանկացած մեթոդ, որը ձեզ հարմարավետ է զգում: Մեթոդներից յուրաքանչյուրը հնարավորություն է տալիս տարրերը զուգակցել իր հետևի/հետագա տարրի հետ: