当前位置: 首页 > 知识库问答 >
问题:

为什么列表中的元素会自行修改?[重复]

越朗
2023-03-14

我想把一个数组的不同数组元素组合(排列)放到一个列表中。我通过for循环交换数组的第一个和最后一个元素,组合(排列)被添加到列表中。然后,第二个元素和最后一个元素之前的元素被交换并添加到列表中,依此类推。假设数组是arr[1,2,3,4,5,6,7],添加到列表中的第一个元素将是arr[7,2,3,4,5,6,1]。第二个元素是arr[7,6,3,4,5,2,1]。但我最终得到的是列表中所有元素的arr[7,6,5,4,3,2,1]

问题是添加到List中的元素也会随着数组的当前修改而相应地修改。我最终在List中得到了类似的数组元素。我想要的是不同的排列或元素组合不同的数组。你能帮帮我吗?

private List<Gate[]> generateSolutions(Gate[] solution) {
    List<Gate[]> sList= new ArrayList<>();
    int i, j;
    for (i = 0, j = solution.length - 1; i < solution.length / 2; i++, j--) {
        Gate temp;
        temp = solution[i];
        solution[i] = solution[j];
        solution[j] = temp;
        sList.add(solution);
    }
    return sList;
}

共有1个答案

梁福
2023-03-14
import java.util.ArrayList;
import java.util.List;

/**
 * Dev Parzival
 * Date : 27/10/2020 Time : 22:40
 * I have a confidence about my life that comes from standing tall on my own two feet.
 */
public class Permutation {
    public static void main(String[] args) {
        ArrayList<Integer> list = new ArrayList<>(10);

        //Make sure that the list has unique numbers
        for(int i=0;i<3;i++)
            list.add(i+1);

        int n =list.size();
        Permutation permutation = new Permutation();

        //Generater permutation
        permutation.permute(list, 0, n-1);
    }

    private void permute(ArrayList<Integer> list, int l, int r) {
        //When l is equal to one less than the length of the list we will display it.
        if (l == r)
            System.out.println(list);
        else{
            //The l valuse specifies which position we want to fix
            for (int i = l; i <= r; i++) {
                //After diciding the position we fix it by swapping it.
                swap(list,l,i);
                //Here we are fixing l+1 th number
                permute(list, l+1, r);
                //Swapping it back to its original position so initial order is maintained
                swap(list,l,i);
            }
        }
    }

    //Swap function will swap ith and jth numbers of the list
    private void swap(List<Integer> list, int i, int j) {
        int temp=list.get(i);
        list.set(i,list.get(j));
        list.set(j,temp);
    }

}

上述代码用于生成置换

 类似资料:
  • 问题内容: 这是我的脚本: 运行时,将打印: 我希望它保持相同的结构。我怎样才能做到这一点? 问题答案: 从Beautiful Soup文档中: 最常见的缺点BeautifulStoneSoup是它不了解自闭合标签。HTML具有一组固定的自闭标签,但对于XML,则取决于DTD所说的内容。您可以BeautifulStoneSoup通过将某些标签作为selfClosingTags构造函数的参数传递来告

  • 问题内容: 我刚遇到一个很奇怪的东西。 为什么它会抬高而又改变内部? 问题答案: 正如我在评论中开始提到的那样,实际上是 在原地 修改列表,然后尝试将结果分配给元组中的第一个位置。从数据模型文档中: 调用这些方法以实现增强的算术分配(+ =,-=, =,/ =,// =,%=,* =,<< =,>> =,&=,^ =,| =)。这些方法应尝试就地进行操作(修改self)并返回结果(可以是,但不一定

  • 主要内容:修改单个元素,修改一组元素Python 提供了两种修改列表(list)元素的方法,你可以每次修改单个元素,也可以每次修改一组元素(多个)。 修改单个元素 修改单个元素非常简单,直接对元素赋值即可。请看下面的例子: 运行结果: [40, 36, -26, 2, -66.2, 100, 7] 使用索引得到列表元素后,通过 赋值就改变了元素的值。 修改一组元素 Python 支持通过切片语法给一组元素赋值。在进行这种操作时,如果

  • 本文向大家介绍Python 修改列表中的元素方法,包括了Python 修改列表中的元素方法的使用技巧和注意事项,需要的朋友参考一下 如下所示: 以上这篇Python 修改列表中的元素方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。

  • 为什么这里两个列表的大小都是零?按照我的理解,< code>aList1.size()应该是< code>0,而< code>aList2.size()应该是< code>1。

  • 我将dataframe的列索引分配给对象。 我只是希望第二个元素(列)名称是“Fred”。