首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python:将out和for循环的列表添加到列表中

Python:将out和for循环的列表添加到列表中
EN

Stack Overflow用户
提问于 2019-11-27 15:40:03
回答 3查看 77关注 0票数 2

我想要在for循环之外创建一个具有0索引值的新列表,然后使用for循环添加到相同的列表中。我的玩具例子是:

代码语言:javascript
运行
复制
import random

data = ['t1', 't2', 't3']

masterlist = [['col1', 'animal1', 'animal2', 'animal3']]
animals = ['cat', 'dog', 'chinchilla']

for item in data:
    masterlist.append([item])
    for animal in animals:
        number1 = random.randint(1, 100)
        number2 = random.randint(1, 100)
        masterlist.append([str(number1) + ',' + str(number2)])

masterlist  

但这产生了以下结果:

代码语言:javascript
运行
复制
[['col1', 'animal1', 'animal2', 'animal3'],
 ['t1'],
 ['52,69'],
 ['8,77'],
 ['75,66'],
 ['t2'],
 ['67,33'],
 ['85,60'],
 ['98,12'],
 ['t3'],
 ['60,34'],
 ['25,27'],
 ['100,25']]

我想要的输出是:

代码语言:javascript
运行
复制
[['col1', 'animal1', 'animal2', 'animal3'],
 ['t1', '52,69', '8,77', '75,66'], 
 ['t2', '67,33', '85,60', '98,12'],
 ['t3', '60,34', '25,27', '100,25']]
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-11-27 15:42:05

这个解决方案会怎样,它会对您的代码进行一些重构吗?

解决方案1

代码语言:javascript
运行
复制
import random

data = ['t1', 't2', 't3']

masterlist = [['col1', 'animal1', 'animal2', 'animal3']]
animals = ['cat', 'dog', 'chinchilla']

for item in data:
    rv = []
    rv.append(item)
    for animal in animals:
        number1 = random.randint(1, 100)
        number2 = random.randint(1, 100)
        rv.append(str(number1) + ',' + str(number2))
    masterlist.append(rv)

输出:

代码语言:javascript
运行
复制
>>> masterlist
[['col1', 'animal1', 'animal2', 'animal3'],
 ['t1', '88,43', '85,62', '84,21'],
 ['t2', '44,99', '32,54', '83,50'],
 ['t3', '82,87', '90,83', '91,84']]

另一种选择是,以下内容将产生同样的结果。

解决方案2

代码语言:javascript
运行
复制
import random

data = ['t1', 't2', 't3']

masterlist = [['col1', 'animal1', 'animal2', 'animal3']]
animals = ['cat', 'dog', 'chinchilla']

for item in data:
    masterlist.append([item] + [f"{random.randint(1, 100)},{random.randint(1, 100)}" for animal in animals])
票数 3
EN

Stack Overflow用户

发布于 2019-11-27 15:46:01

你可以做这样的事。使用temp列表存储每个迭代的项。此外,您在附加时使用了许多方括号,这导致了过于嵌套的列表。

代码语言:javascript
运行
复制
import random

data = ['t1', 't2', 't3']

masterlist = [['col1', 'animal1', 'animal2', 'animal3']]
animals = ['cat', 'dog', 'chinchilla']

for item in data:
    temp = []
    temp.append(item)
    for animal in animals:
        number1 = random.randint(1, 100)
        number2 = random.randint(1, 100)
        temp.append(str(number1) + ',' + str(number2))
    masterlist.append(temp)

print(masterlist)
票数 1
EN

Stack Overflow用户

发布于 2019-11-27 15:50:38

您还可以使用列表理解如下:

代码语言:javascript
运行
复制
import random

data = ['t1', 't2', 't3']

masterlist = [['col1', 'animal1', 'animal2', 'animal3']]
animals = ['cat', 'dog', 'chinchilla']

for d in data:
     rv = [d] + [str(random.randint(1, 100)) + ',' + str(random.randint(1, 100)) for a in animals]

masterlist.append(rv)

或者在一份单子理解中更难理解:

代码语言:javascript
运行
复制
masterlist+= [[d] + [str(random.randint(1, 100)) + ',' + str(random.randint(1, 100)) for a in animals] for d in data]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59073734

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档