2013-05-17 4 views
0

첫 번째리스트 (list1)의 각 튜플과 두 번째리스트 (list 2)의 해당 튜플을 비교하려고하는 기본 코드가 있습니다. 목록 2의 튜플이 list1의 해당 튜플에서 '.vbproj'을 뺀 값이면 두 튜플을 모두 반환합니다.다른리스트의 두 튜플 비교하기

그러면 list2의 tuple과 list1의 튜플을 출력해야합니다. 나는 이것을하는 방법에 막 붙어있다.

path = "C:\Users\bg\Documents\Brent" 

list1 = [ 'Brent.vbproj', 'Chris.vbproj', 'Nate.vbproj'] 
list2 = ['Brent', 'Chris', 'Nate'] 

def connect(list1, list2): 

    for x, y in zip(string[0], string2[0]): 
     if string(x) is string2(y): 
      print x 
      os.path.join(path, x, y) 




x = connect(list1, list2) 
y = connect(list1, list2) 

나는 최소한 동등한까지 zip() 비해 두 튜플을 생각하지만, 내가 잘못 될 수있다? 나도 몰라, 어떤 도움이 크게 감사하겠습니다. 미리 감사드립니다!

+0

인쇄의 목적은 복귀 후 무엇인가? – oleg

+0

아마도'list1'과'list2'와'connect'를 부를까요? –

+0

@oleg 난 그냥 제대로 여부 – bbesase

답변

1

==을 사용하여 동일성을 테스트하십시오. is신원 확인에 대한 테스트, 양측은 동일 대상입니다. 또한 입력 stringstring2은 기능이 아니므로 호출 할 수 없습니다. 그냥 직접 xy 비교 :

if x == y: 

참고하면 return를 호출 할 때 함수 끝나는. 다음 행의 print 문은 무시되고 for 루프도 끝납니다.

마지막으로, 당신은 단지 stringstring2 요소를 압축하는있다.

for x, y in zip(string, string2): 
: 나는 당신이하는 당신은 아마 그래서, 단지 색인없이 목록 을 전달하는 경우 등 처음 'Brent.vbproj''Brent', 다음 'Chris.vbproj''Chris', 최대 페어링 원 포인트, list1list2와이 전화를하고 싶어 의심

나는 당신이 원하는 것을 성취 할 수 있을지 의심 스럽다. list1list2의 값 쌍 중 어느 것도 동일하지 않습니다.

아마 str.startswith() method을보고 싶습니까? 또한 os.path library에는 파일 이름과 경로를 조작하고 테스트하는 경우 익숙한 기능이 있습니다. os.path.join(), os.path.splitext()os.path.commonprefix() 함수는 내가 이라고 생각하는 경우 여기에서 수행하려고 시도하는 것이 특히 중요합니다.

path 변수도 조정해야합니다. 원시 문자열, 슬래시를 사용하거나 슬래시를 두 배로 : \b

path = r"C:\Users\bg\Documents\Brent" 
path = "C:\\Users\\bg\\Documents\\Brent" 
path = "C:/Users/bg/Documents/Brent" 

는 백 스페이스에 대한 이스케이프 코드입니다.

+0

두 번째 튜플 지금은 그것의'목록 말을하는'=='과 여전히 나던 작업에'is'을 변경 @martijin 객체를 호출 할 수 없습니다. '경로 조언을 주셔서 감사합니다. 앞으로도 계속 주목 해 보겠습니다. – bbesase

+0

@ Martijin 그래서 인덱스를 추가하지 않고 두리스트를 전달하면 튜플을 거쳐서 튜플로 갈 것입니다. – bbesase

+0

@bbesase : exactly; 대신 *이 * 문자열 쌍을 경우, 그들은 문자 쌍에 의해 그들을 통해 갈 것이다 :'우편 ('AA', 'BB')는''[('A', 'B'), ('A'가된다, 'b')]'. –

1

stringstring2 !! 어쨌든 당신의 질문 텍스트에서 당신의 문제를 이해했습니다 !!

나 자신은 다른 방법으로 그것을 할 것입니다 초보자로서, list2 튜플 대응 list1에 튜플을 비교 ..

>>> path = r"C:\Users\bg\Documents\Brent" 
>>> list1 = [ 'Brent.vbproj', 'Chris.vbproj', 'Nate.vbproj'] 
>>> list2 = ['Brent', 'Chris', 'Nate'] 
>>> for i in range(0, len(list1)): 
    if i < len(list2): 
     if list2[i][:] == list1[i][:len(list2[i])]: 
      print(path + list2[i] + list1[i]) #Print syntax is for python 3 


C:\Users\bg\Documents\BrentBrentBrent.vbproj 
C:\Users\bg\Documents\BrentChrisChris.vbproj 
C:\Users\bg\Documents\BrentNateNate.vbproj 
>>> 
+0

아주 많이들 감사? – bbesase

+0

@bbesase 아니라, 나를 위해 노력하고 있습니다 .... 점점 어떤 오류 : 나뿐만 아니라이 일을 시도하고 작동하지 않았다 – ParokshaX

+0

오류 아무것도 위의 내 코드와 그 해당 출력을 참조 @bbesase – bbesase

관련 문제