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
]
3 Réponses :
Voici une façon de le faire: entrée: p> 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]
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
Que voulez-vous dire aucun test i>?
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 i>
[1, 2, 7, 8, 5, 6, 3, 4, 9, 10, 15, 16, 13, 14, 11, 12, 17, 18, 23, 24, 21, 22, 19, 20]
Ê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 code> est indexé, de sorte qu'il n'en a pas besoin d'un autre +1. Corrigé maintenant.