2014-02-18 2 views
0

나는 목록이 a = ['type1','type2','type3']이고 기능이 있습니다. 함수에서 나는 목록을 반환하고 싶지만 ' '은 제외합니다. 이것이 가능한가? 내가 돌아올 때 나는 " "와 함께한다.""없이 함수에서 목록을 반환하는 방법

+0

문자열로 반환 하시겠습니까? '[type1, type2, type3]'와 같은 것? – Linuxios

+0

예. ""또는 ""없이 문자열처럼 – user3297266

+0

문자열을 "좋아"한다는 의미라면 @ Martin의 대답을 참조하십시오. 캐릭터 라인을 의미한다면''[% s] '%', '. join (a)'와 같은 것을 할 것입니다. – Linuxios

답변

4

파이썬은 목록과 같은 컨테이너에 값을 표시합니다. 값 표현은입니다. 문자열의 경우 리터럴 문자열 값이 인용 부호로 묶여 있음을 의미합니다.

이 아닌은 실제 값을 포함한다는 것을 의미합니다.

당신은 단지 문자열 값을 보여줍니다 단자 물론 인쇄 뭔가, 쉼표로 합류 대괄호로 둘러싸인의 수 :

print '[{0}]'.format(', '.join(yourlist)) 

하지만 그 목록 개체를 변경하지 않습니다 않으며, 당신이 원하는해야 에.

코드의 경우 모듈에서 전역 목록을 수정하려고합니다. 모듈을 가져올 때 make_table(tresort_liste, sla_liste, wb) 라인은 table_listelbmer을 변경하는 실행 :

>>> import yourmodule 
[['b\xc3\xb8k', 155.73786516665265], ['eik', 200.23439807141054], ['rogn', 149.1107219680717], ['poppel', 152.3522594021602], ['furu', 876.0254915624212], ['gran', 350.4101966249685], ['douglasgran', 778.6893258332633]] 
>>> yourmodule.table_liste 
[['b\xc3\xb8k', 155.73786516665265], ['eik', 200.23439807141054], ['rogn', 149.1107219680717], ['poppel', 152.3522594021602], ['furu', 876.0254915624212], ['gran', 350.4101966249685], ['douglasgran', 778.6893258332633]] 
>>> yourmodule.lbmer 
[155.73786516665265, 200.23439807141054, 149.1107219680717, 152.3522594021602, 876.0254915624212, 350.4101966249685, 778.6893258332633] 

귀하의 테스트가 다음 다시 make_table 기능 를 실행하고 테스트 인수는 이러한 글로벌 목록에 추가됩니다. 그 결과, 당신이 기대하는 것보다이 방법이 더 많은 데이터를 반환하고 테스트가 실패 : 이야기의

>>> names = ['abc', 'def', 'ghi'] 
>>> sla = [1, 2, 4] 
>>> lbm = [15.3, 7.65, 3.825] 
>>> zip(*yourmodule.make_table(names, sla, 50000)) 
[('b\xc3\xb8k', 'eik', 'rogn', 'poppel', 'furu', 'gran', 'douglasgran', 'abc', 'def', 'ghi'), (155.73786516665265, 200.23439807141054, 149.1107219680717, 152.3522594021602, 876.0254915624212, 350.4101966249685, 778.6893258332633, 155.73786516665265, 200.23439807141054, 149.1107219680717)] 

도덕은 : 전역을 사용하지 마십시오. 부수적으로 전역을 사용하지 않습니다

import math 

def compute_lbm(sla, wb): 
    return (0.3 + math.sqrt(0.0045 * wb))/sla 

def make_table(tresorter, slaer, wb): 
    return [[sort, compute_lbm(sla, wb)] for sort, sla in zip(tresorter, slaer)] 

if __name__ == '__main__': 
    sla_liste = [0.045, 0.035, 0.047, 0.046, 0.008, 0.020, 0.009] 
    tresort_liste = ["bøk", "eik", "rogn", "poppel", "furu", "gran", "douglasgran"] 
    wb = 10000 

    print make_table(tresort_liste, sla_liste, wb) 

:

귀하의 코드를 단순화 할 수있다. 이 파일을 주 스크립트로 직접 실행하는 경우에만 끝에있는 print make_table() 호출이 모듈로 사용될 때 실행되지 않습니다.

assertAlmostEqual()places 또는 delta 인수가 누락되었으므로 출력 결과가 얼마나 일치해야하는지 지정해야합니다.

당신이 쫓고있는 따옴표는 확실히 여기에 문제가되지 않습니다.

+0

@Aaron :'0'은 파이썬 2.6과 그 이전 버전에서만 필요합니다; Python 2.7 및 3.x 위치 슬롯에는 자동으로 번호가 매겨집니다. –

+0

파이썬에 헌신 한 거대 기업이 여전히 이전 버전에 머물렀다는 것을 알고 계십니까? 나는 하루 종일 2.6을 사용하고있다. {0}은 (는) 앞으로 호환되지만 {}은 (는) 이전 버전과 호환되지 않습니다. –

+0

@AaronHall : 물론 이죠,하지만 편집 대신에 댓글이 올 수있었습니다. :-) –

관련 문제