for循环输出的Python for for循环和格式

时间:2016-07-13 15:57:38

标签: python loops

我是一个Python新手,我有几个问题。在下面的例子中,我想在for循环外部的for循环中使用x的输出,同时保持其格式。我试图将它附加到循环外的列表中,但是当我打印附加的变量时,它不会以相同的格式显示。

问题1:如何以相同的格式使用循环外部循环的输出?

问题2:如何在保持格式的同时将for循环的输出分配给循环外的变量?

问题3:有没有快速计算最终输出中唯一颜色数量的方法?例如红色:2,蓝色:2,绿色:1,橙色:​​1,白色:2,黑色:1,紫色:2,靛蓝:1

file = '''2016-07-12 08:00   Red     Blue    Green
          2016-07-12 08:00   Red     Orange  White
          2016-07-12 09:00   Blue    Black   Purple
          2016-07-12 10:00   Indigo  Purple  White'''

split_file = file.split('\n')

my_list = []
for i in split_file:
    x = (str(i).split())
    my_list.append(x)
print(my_list)

for中的输出如下所示:

['2016-07-12', '08:00', 'Red', 'Blue', 'Green']
['2016-07-12', '08:00', 'Red', 'Orange', 'White']
['2016-07-12', '09:00', 'Blue', 'Black', 'Purple']
['2016-07-12', '10:00', 'Indigo', 'Purple', 'White']

追加后的输出如下所示:

[['2016-07-12', '08:00', 'Red', 'Blue', 'Green'], ['2016-07-12', '08:00', 'Red', 'Orange', 'White'], ['2016-07-12', '09:00', 'Blue', 'Black', 'Purple'], ['2016-07-12', '10:00', 'Indigo', 'Purple', 'White']]

2 个答案:

答案 0 :(得分:0)

当您致电.split()时,您实际上正在创建两个列表。如果要将它们存储在列表中,则需要第二次循环。

my_list = []
for i in split_file:
    x = (str(i).split())
    for split in x:
        my_list.append(split)
print(my_list)

关于您的第三个问题,我建议您根据答案的评论中的建议使用collections.counter

for word in ['red', 'blue', 'red', 'green', 'blue', 'blue']:
     cnt[word] += 1
print cnt

来自Python Collections documentation

答案 1 :(得分:0)

您拥有的第一个输出是x逐行打印。第二个输出包含数组中的所有x,因此它们显示逗号分隔的原因。如果要以相同的格式打印它们,则必须在my_list上运行for循环,并在每行上调用print而不是打印整个数组。

所以,

for element in my_list:
    print(element)