python - 如何将列表导出到 Excel 兼容文件中?

标签 python excel python-3.x text-files

今天,根据我在这里得到的答案,我编写了这段小代码来创建一个包含 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/

相关文章:

python - Django:无法通过 MyModel 实例访问管理器

python - 将 OpenCV IplImage* 数据转换为 numpy 数组

python - 为什么这个 python 代码不打印字谜?

python - 在 python3.6 中使用 matplotlib 绘制增强图像

Python:查找和替换批处理 csv 文件中的字符串

python - 这个函数是重载还是什么?

excel - Excel 中分组经常性 CF 的净现值

excel - Excel 中范围内的 DATEDIF

excel - 当数字也可能为负时,如何在 excel/google 电子表格中将数字格式化为十万和千万?

python - Pandas 'dupout' 如何查看删除的重复文件