我想要在for循环之外创建一个具有0索引值的新列表,然后使用for循环添加到相同的列表中。我的玩具例子是:
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 但这产生了以下结果:
[['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']]我想要的输出是:
[['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']]发布于 2019-11-27 15:42:05
这个解决方案会怎样,它会对您的代码进行一些重构吗?
解决方案1
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)输出:
>>> 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
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])发布于 2019-11-27 15:46:01
你可以做这样的事。使用temp列表存储每个迭代的项。此外,您在附加时使用了许多方括号,这导致了过于嵌套的列表。
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)发布于 2019-11-27 15:50:38
您还可以使用列表理解如下:
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)或者在一份单子理解中更难理解:
masterlist+= [[d] + [str(random.randint(1, 100)) + ',' + str(random.randint(1, 100)) for a in animals] for d in data]https://stackoverflow.com/questions/59073734
复制相似问题