0

我有这个基本代码,我只是想将第一个列表(list1)中的每个元组与第二个列表(列表2)中的相应元组进行比较。如果列表 2 中的元组 = 对应于 list1 中的元组减去 the ,'.vbproj'则获取两个元组并返回它们。

然后我需要打印路径 + 来自 list2 的元组 + 来自 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()两个元组比较到最小等价,但我可能是错的??我不知道,任何帮助将不胜感激。提前致谢!

4

2 回答 2

1

用于==测试是否相等。is测试身份,双方是同一个对象。此外,您的输入string并不是string2函数,因此您不能调用它们。x直接比较y即可:

if x == y:

请注意,您调用return. 下一行的print语句被忽略,for循环也结束。

最后但并非最不重要的一点是,您只是压缩and的第一个元素。我怀疑您想用and调用它,此时您可能想先配对and ,然后配对and等。如果是这样,只需传递列表而不使用索引stringstring2list1list2'Brent.vbproj''Brent''Chris.vbproj''Chris'

for x, y in zip(string, string2):

我怀疑你会实现你想要的;list1list2永远不会相等的任何值对。

也许你想看看str.startswith()方法?此外,如果您正在操作和测试文件名和路径,该os.path还具有您想要熟悉的功能。,os.path.join()和函数应该对我认为你在这里尝试做的事情os.path.splitext()特别感兴趣。os.path.commonprefix()

请注意,您的path变量也需要调整。使用原始字符串、正斜杠或双斜杠:

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

退格\b的转义码也是如此。

于 2013-05-17T14:52:07.403 回答
1

你还没有定义stringstring2 !!无论如何,我从您的问题文本中理解了您的问题!

比较一个元组 list1相应的元组list2,我自己作为一个初学者会用另一种方式来做。

>>> 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
>>> 
于 2013-05-17T15:18:23.080 回答