今天,根据我在这里得到的答案,我编写了这段小代码来创建一个包含 16 个元素的随机列表。
import random
sources = ['Prone', 'Supine', 'Halfway', 'HalfInv']
result = [random.choice(sources)]
repeats = 0
fail = 0
while len(result) < 16:
elem = random.choice(sources)
repeats = result.count(elem)
print(repeats)
if (elem != result[-1]) & (repeats < 4):
result.append(elem)
else:
fail = fail + 1
print(fail)
if fail > 100:
result = [random.choice(sources)]
print(result)
现在我想做的是: 1. 创建 2 个随机列表,并以不同的方式命名它们(我如何根据 for 循环计数器执行此操作?) 2. 将这 2 个列表作为列放入制表符分隔 (txt) 文件中,一个紧挨着另一个,以便轻松地将它们复制粘贴到 Excel 文件中。我研究了 csv 模块,但它似乎只有行的方法。
最佳答案
如果您正在寻找一种更有效的方法来从源中获取每个列表元素中的 4 个元素的随机排序列表,请尝试 random.shuffle(list)
:
>>> import random
>>> random.seed()
>>> sources = ['Prone', 'Supine', 'Halfway', 'HalfInv']
>>> copy1 = sources * 4
>>> copy2 = sources * 4
>>> copy1 == copy2
True
>>> random.shuffle(copy1)
>>> random.shuffle(copy2)
>>> copy1 == copy2
False
>>> copy1
['HalfInv', 'Prone', 'Halfway', 'Supine', 'Prone', 'Halfway', 'Prone', 'Supine', 'Prone', 'HalfInv', 'HalfInv', 'Halfway', 'Supine', 'Halfway', 'HalfInv', 'Supine']
>>> copy2
['Prone', 'Halfway', 'Prone', 'Prone', 'HalfInv', 'Halfway', 'Halfway', 'HalfInv', 'Supine', 'HalfInv', 'Halfway', 'Supine', 'Prone', 'Supine', 'HalfInv', 'Supine']
接下来,您想要根据循环计数器生成并命名列表...我建议不要这样做。相反,只需一次将随机列表附加到一个列表中,您就可以按照附加顺序对它们进行索引。
>>> n = 2 # number of random lists you want
>>> rand_lists = [] # A list for holding your randomly generated lists
>>> for i in range(n):
sources_copy = sources * 4
random.shuffle(sources_copy)
rand_lists.append(sources_copy)
但这仍然会给您带来一个问题,即您的数据位于两个单独的列表中。为了解决这个问题,您需要 zip() 函数。它将列表 1 中的每个元素与列表 2 中相应的索引元素连接起来,在每个索引处形成一个元组。这可以通过任意数量的序列来完成。
>>> list1 = [1,2,3,4,5]
>>> list2 = ['a','b','c','d','e']
>>> zip(list1, list2)
[(1, 'a'), (2, 'b'), (3, 'c'), (4, 'd'), (5, 'e')]
要将列表中的列表压缩在一起,请在元列表名称前使用 *
星号解包运算符。
>>> my_data = zip(*rand_lists)
现在您想要输出到 csv 文件;只需编写自己的 csv 函数就很容易了。请记住,列分隔符是逗号,行分隔符是换行符。
def out_csv(mydata, filename):
with open(filename, 'w') as out_handle:
for line in mydata:
out_handle.write(','.join(line) + '\n')
从这里将您的压缩列表组合传递到 out_csv 函数中,并确保您的文件名具有 .csv
扩展名。 Excel 本身可以读取 .csv
文件,因此您不需要进行任何复制粘贴。
这是最后一步:
>>> out_csv(my_data, 'my_name.csv')
关于python - 如何将列表导出到 Excel 兼容文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6653881/