0
votes

Comment échanger des éléments dans la liste à tout moment?

l = [ 1 ,6,7,8,
      5 ,2,3,4,

      9,14,15,16,
      13,10,11,12,

      17,22,23,24,
      21,18,19,20
     ]

0 commentaires

3 Réponses :


0
votes

Voici une façon de le faire: xxx pré>


entrée: p> xxx pré>

sortie: p>

[1, 2, 7, 8,
 5, 6, 3, 4,
 9, 10, 15, 16,
 13, 14, 11, 12,
 17, 18, 23, 24,
 21, 22, 19, 20]


0 commentaires

0
votes

Utilisez un échange en ligne ici. Aucun test pour toutes les conditions.

: Parameters
  lst - list to swap elements
  offset - the start index of elements to swap
  distance - the distance between each start index of elements to swap, you can think it is same as width of total columns.
  items - the number of continue elements to swap
: Return
  None, in-line swap


8 commentaires

Que voulez-vous dire aucun test ?


Quatre arguments obtiennent de nombreuses conditions, cela prendra beaucoup de temps pour trouver toutes les conditions de combinaison à tester. : -)


Le message de l'OP est censé échanger 2 colonnes à la fois.


Non, vous avez manqué, un autre échantillon 3 colonnes échangés. La longueur de la colonne peut être n'importe quoi, aucune règle pour la dimension de la liste, ....


So Distance = Offset + Articles, Droite? Nous pouvons alors simplement utiliser 2 variables au lieu de 3 échangons def (LST, décalage, distance, (décalage de distance)):


Explication ajoutée des arguments, pour mon exemple d'échange (LST, 1, 6, 5), il suffit d'une chance 6 = 1 + 5, il peut échanger (LST, 1, 6, 1), échange (LST, 1, 6, 2), ..., échange (1, 6, 5).


Par exemple, Swap (LST, 1, 5, 3) signifie l'indice d'échange à 1,2,3 avec 6, 7, 8; Échangez 11,12,13 avec 16, 17, 18. Pour une liste de longueur 24, plus d'échange de swap, car pas assez d'éléments pour un prochain échange.


@Jasonyang parce que vous n'avez pas ajouté '@annzen', je n'ai jamais réalisé le commentaire jusqu'à présent, je suis revenu au hasard. juste dire au cas où cela se produira ailleurs et provoque des malentendus



0
votes
[1, 2, 7, 8, 
 5, 6, 3, 4, 

 9, 10, 15, 16, 
 13, 14, 11, 12, 

 17, 18, 23, 24, 
 21, 22, 19, 20]

2 commentaires

Êtes-vous sûr que ça marche? Il est indiqué ValueError: tenter d'attribuer une séquence de taille 2 à une tranche d'ex-de taille 3


@Ishankumar bonne prise! J'ai oublié que le row_len est indexé, de sorte qu'il n'en a pas besoin d'un autre +1. Corrigé maintenant.