[英]Save multiple shuffled csv files
有沒有一種快速的方法可以將列表洗牌 n 次(以不同的順序)並將其保存為 n 個單個 csv 文件? 我已經搜索了很多,但找不到任何關於它的信息。 我有以下代碼,但我確定它可以更短,因此我無法確定所有洗牌列表都有不同的順序。 有人有解決方案嗎?
import random
example = ['S01_a', 'S01_b', 'S02_a', 'S02_b', 'S03_a', 'S03_b', 'S04_a']
while True:
example
shuffle3 = []
last = ""
while example:
i = example
if last:
i = [x for x in i if x[4] != last[4]]
if not i:
#no valid solution
break
newEl = random.choice(i)
last = newEl
shuffle3.append(newEl)
example.remove(newEl)
if not example:
break
fid = open("example.csv", encoding='latin1', mode="w")
fid.writelines(shuffle3)
fid.close()
您可以在列表索引上生成所有可能的排列,然后按照排列給出的順序選擇元素以生成新的無序列表。 最后,打亂列表列表並選擇前 N 個。
from itertools import permutations
from random import shuffle
example = ['S01_a', 'S01_b', 'S02_a', 'S02_b', 'S03_a', 'S03_b', 'S04_a']
indices = [x for x in range(0,len(example))]
n_perm = 5
all_permutations = list(set(permutations(indices)))
shuffle(all_permutations)
my_permutations = all_permutations[:n_perm]
for index, elem in enumerate(my_permutations):
new_shuffle = [example[x] for x in elem]
with open("example_{}.csv".format(str(index)), "w") as fid:
fid.writelines(",".join(new_shuffle))
你可以做:
import itertools, random
N = 5
example = ['S01_a', 'S01_b', 'S02_a', 'S02_b', 'S03_a', 'S03_b', 'S04_a']
all_options = list(itertools.permutations(example, len(example)))
my_lists = random.choices(all_options, k=N)
my_lists
輸出:
[('S02_b', 'S01_a', 'S03_a', 'S01_b', 'S02_a', 'S03_b', 'S04_a'),
('S03_b', 'S02_b', 'S01_b', 'S03_a', 'S01_a', 'S02_a', 'S04_a'),
('S02_a', 'S04_a', 'S03_a', 'S02_b', 'S03_b', 'S01_b', 'S01_a'),
('S02_b', 'S04_a', 'S01_a', 'S02_a', 'S03_b', 'S01_b', 'S03_a'),
('S03_a', 'S04_a', 'S01_b', 'S02_a', 'S02_b', 'S01_a', 'S03_b')]
然后,如果您想分別為每個人做某事,只需循環它們:
for l in my_lists:
I_do_what_it_want with l...
像這樣的東西? 你必須尋找一個庫來生成 csv
import java.util.*;
public class GFG
{
public static void main(String[] args)
{
ArrayList<String> mylist = new ArrayList<String>();
mylist.add("code");
mylist.add("quiz");
mylist.add("geeksforgeeks");
mylist.add("quiz");
mylist.add("practice");
mylist.add("qa");
System.out.println("Original List : \n" + mylist);
// Here we use Random() to shuffle given list.
Collections.shuffle(mylist, new Random());
System.out.println("\nShuffled List with Random() : \n"
+ mylist);
// Here we use Random(3) to shuffle given list.
Collections.shuffle(mylist, new Random(3));
System.out.println("\nShuffled List with Random(3) : \n"
+ mylist);
// Here we use Random(3) to shuffle given list.
Collections.shuffle(mylist, new Random(5));
System.out.println("\nShuffled List with Random(5) : \n"
+ mylist);
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.