Có một hàm Lisp chung nào sẽ hoán đổi hai phần tử trong danh sách được đưa ra chỉ mục của chúng và trả về danh sách đã sửa đổi không?Trao đổi các phần tử trong danh sách Lisp chung
11
A
Trả lời
16
Bạn có thể sử dụng rotatef
:
(rotatef (nth i lst) (nth j lst))
Tất nhiên, danh sách chỉ mục có thể tốn kém (chi phí O (kích thước danh sách)), vì vậy nếu bạn làm điều này với bất kỳ đều đặn, bạn thà muốn sử dụng một mảng:
(rotatef (aref arr i) (aref arr j))
4
tôi sẽ tránh lập chỉ mục vào danh sách hai lần bằng cách sử dụng nthcdr
để có được những cdr của tế bào khuyết điểm có chứa các yếu tố đầu tiên mà bạn muốn trao đổi và sau đó sử dụng elt
để g và phần tử còn lại ra khỏi danh sách con. Điều này có nghĩa là bạn chỉ phải thực sự lập chỉ mục bắt đầu từ đầu danh sách một lần.
(let ((list-tail (nthcdr i list)))
(rotatef (car list-tail)
(elt list-tail (- j i)))
list)
Ít nhất theo quan điểm của tôi, điều này đủ tẻ nhạt để biện minh cho một hàm.
Các vấn đề liên quan
- 1. Trao đổi các phần tử trong NSMutableArray
- 2. Xóa phần tử khỏi danh sách chung
- 3. Trao đổi biến LISP
- 4. emacs lisp: Cách xóa/xóa phần tử của danh sách?
- 5. trao đổi trên danh sách thả xuống
- 6. Thay đổi một phần tử trong một danh sách sẽ thay đổi nhiều danh sách ..?
- 7. Cách sạch nhất để xóa các phần tử danh sách chung trên nhiều danh sách trong python
- 8. Danh sách chuyển đổi vào bản đồ của phần tử -> danh sách (phần tử) trong scala
- 9. Chỉnh sửa các phần tử trong danh sách trong python
- 10. Thử nghiệm phần tử trong danh sách
- 11. Popping một phần tử từ một danh sách liên kết trong lisp (elisp)
- 12. Danh sách hoán đổi <> các phần tử có C# sử dụng LINQ
- 13. sửa đổi phần tử danh sách có hiểu danh sách trong python
- 14. thủ thuật cho các phần tử nổi bên trong các phần tử danh sách
- 15. Cách tìm các phần tử phổ biến trong danh sách các danh sách?
- 16. Python: Đếm tần số của các phần tử trong danh sách các danh sách
- 17. Tìm tối đa danh sách các danh sách theo tổng các phần tử trong Python
- 18. Điền vào các khoảng trống trong phần tử danh sách
- 19. đếm các phần tử mới trong danh sách vector
- 20. Bỏ qua các phần tử trong Danh sách Python
- 21. Thu hẹp tất cả các phần tử trong danh sách
- 22. Tổng hợp các phần tử trong danh sách
- 23. Định dạng tất cả các phần tử trong danh sách
- 24. Tìm các phần tử không phổ biến trong danh sách
- 25. Tìm một phần tử trong một danh sách các hàng
- 26. chuyển đổi Danh sách chung .NET thành F # danh sách
- 27. xóa các phần tử trong một danh sách có trong danh sách khác
- 28. Trao đổi vị trí của các phần tử trong một mảng trong java?
- 29. Trao đổi các giá trị trong một tuple/list bên trong một danh sách trong python?
- 30. Chuyển danh sách trong Common Lisp
DAMN! SO cần phải làm một cái gì đó về cú pháp tô sáng. Tôi nghĩ rằng nó là xấu cho python. – aaronasterling