2016-07-21 3 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 루프를 사용하려했지만, 나는 여전히 내가 원하는 결과를 얻을 수 없다. 목록을 형식화하는 방법이 있는지 궁금합니다. 그 결과 (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]

처럼 나는 이클립스와 파이썬 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

당신은 사용할 수 있습니다 : 당신이 당신의 목록을 평평하게 할 수

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

참고 itertools.chain를 사용하여 :

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

먼저이 문제를 해결하기 위해 round를 사용하여 다음 목록 (as described here)을 평평하게 할 수 있습니다 :

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] 

우리는 목록의 이해에 직접 라운딩 넣어 :

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

내가 내장 함수 round()을 사용하고, 그것에 대해 동안 나는 당신의 for 루프를 단순화하는 것 :

def flatten(values): 
    new_values = [] 
    for i in values: 
     for v in i: 
      new_values.append(round(v, 2)) 
    return new_values 
0

어떻게 평평 한 줄로 목록을 변환하십시오.

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

쉼표 뒤에 두 개의 소수점이있는 목록을 반환합니다. 다음과 같이

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'] 

희망하는 데 도움이!

관련 문제