我试图将第3个列表中的元素洗牌到最后一个位置,所以前两个将始终保持原位,例如
list = ['a?','b','c','d','e']
Run Code Online (Sandbox Code Playgroud)
成
list = ['a?','b','d','e','c']
Run Code Online (Sandbox Code Playgroud)
由于某种原因,这不起作用:
list = ['a?','b','c','d','e']
import random
random.shuffle(list[2:])
print list
Run Code Online (Sandbox Code Playgroud)
谁知道我做错了什么?
对我来说唯一有用的是迄今为止(EDITED):
lists = [['a?','b','c','d','e'],['1?','2','3','4','5','6','7']]
import random
for list in lists:
copy = list[2:]
random.shuffle(copy)
list[2:] = copy
print lists
Run Code Online (Sandbox Code Playgroud)
认为这正是我所需要的.
是否可以在shuffle中排除数组索引?
我对这个问题的见解:
Array[0,1,2,3,4,5,6,7,8]
Exclude Array index 2 and 7 in shuffle.
Shuffle Array.
Array[3,5,2,1,6,8,0,7,4]
Run Code Online (Sandbox Code Playgroud)
这是我在洗牌中使用的内容:
List<Pokemon>list = Arrays.asList(pkm);
Collections.shuffle(list);
Run Code Online (Sandbox Code Playgroud)
编辑:
谢谢,@ Jhanvi!我研究了你的代码,它给了我一些想法.我试着玩你和@Rohit Jain的代码并创建了一个样本:
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.ArrayList;
public class Example {
public static void main(String[]args){
String[] x = {"a","b","c","d","e","f","g","h"};
List<String> list = new ArrayList<String>(Arrays.asList(x));
System.out.println("Before shuffling, ArrayList contains : " + list);
Object obj = list.remove(7);
Object obj1 = list.remove(2);
Collections.shuffle(list);
list.add(2, obj1);
list.add(7, obj);
System.out.println("After shuffling, ArrayList contains : " + list);
}
}
Run Code Online (Sandbox Code Playgroud)
令人讨厌的是它给了我一个错误:在我的list.add()上找不到符号方法add(int,java.lang.Object). …