2016-07-21 37 views
2
values = [[3.5689651969162908, 4.664618442892583, 3.338666695570425], 
      [6.293153787450157, 1.1285723419142026, 10.923859694586376], 
      [2.052506259736077, 3.5496423448584924, 9.995488620338277], 
      [9.41858935127928, 10.034233496516803, 7.070345442417161]] 

def flatten(values): 

    new_values = [] 
    for i in range(len(values)): 
     for v in range(len(values[0])): 
      new_values.append(values[i][v]) 
    return new_values 

v = flatten(values) 
print("A 2D list contains:") 
print("{}".format(values)) 
print("The flattened version of the list is:") 
print("{}".format(v)) 

2Dリストを1Dにフラット化していますが、フォーマットできます。私は(v)がリストであり、それを印刷するためにforループを使用しようとしましたが、私はまだ結果を得ることができません。リストをフォーマットする方法はありますか?私は小数点以下2桁で(v)を結果として印刷したいと思います。このリストを印刷するときの書式設定方法

[3.57、4.66、3.34、6.29、1.13、10.92、2.05、3.55、10.00、9.42、10.03、7.07]

のように私は、EclipseとPython 3.0+を使用しています。

あなたが使用することができ
+0

これはあなたが探しているものです。http://stackoverflow.com/questions/3264828/change-default-float-print-format – PyNEwbie

+0

質問が削除されて閉鎖のフラグが立てられない場合は、 – PyNEwbie

+0

私はv:print( "{:。2f}"。format(i))のようにforループを使用しようとしました。それは動作しません。リストではなく文字列を出力しています。 – armchannelpatrick

答えて

3

:あなたはitertools.chainを使用してあなたのリストを平らにすることができます

print(["{:.2f}".format(val) for val in v]) 

注:

import itertools 
v = list(itertools.chain(*values)) 
0

をあなたが最初(as described here)リストを平らにしてから、この解決するためにroundを使用することができます。

flat_list = [number for sublist in l for number in sublist] 
# All numbers are in the same list now 
print(flat_list) 
[3.5689651969162908, 4.664618442892583, 3.338666695570425, 6.293153787450157, ..., 7.070345442417161] 

rounded_list = [round(number, 2) for number in flat_list] 
# The numbers are rounded to two decimals (but still floats) 
print(flat_list) 
[3.57, 4.66, 3.34, 6.29, 1.13, 10.92, 2.05, 3.55, 10.00, 9.42, 10.03, 7.07] 

これは、私は組み込み関数round()を使用して、私はそれについてあった間、私はあなたのforループを単純化する

print([round(number, 2) for sublist in l for number in sublist]) 
0

:我々はリストに直接丸め理解を置く

平坦化する方法
def flatten(values): 
    new_values = [] 
    for i in values: 
     for v in i: 
      new_values.append(round(v, 2)) 
    return new_values 
0

リストを1行に変換する

[round(x,2) for b in [x for x in values] for x in b] 

コンマの後に2つの小数点以下のリストを返します。次のように

formattedList = ["%.2f" % member for member in v] 

出力した:

0

一つは、あなたが持っているあなたのようなリストの内包表記を使用することができ、V

['3.57', '4.66', '3.34', '6.29', '1.13', '10.92', '2.05', '3.55', '10.00', '9.42', '10.03', '7.07'] 

希望に役立ちます!

関連する問題