我有这个基本代码,我只想将第一个列表(list1)中的每个元组与第二个列表中的相应元组(列表2)进行比较。如果列表2中的元组= = list1中相应的元组减去'.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()
比较了两个元组到最小等价但我可能错了?我不知道,任何帮助将不胜感激。提前谢谢!
答案 0 :(得分:1)
使用==
测试是否相等。 is
测试身份,双方是同一个对象。此外,您的输入string
和string2
不是函数,因此您无法调用它们。只需直接比较x
和y
:
if x == y:
请注意,当您致电return
时,函数将结束。下一行的print
语句将被忽略,for
循环也会结束。
最后但同样重要的是,您只是压缩string
和string2
的第一个元素。我怀疑你想用list1
和list2
打电话给你,此时你可能想先配对'Brent.vbproj'
和'Brent'
,然后配对'Chris.vbproj'
和{ {1}}等。如果是这样,只需传递列表而不编制索引:
'Chris'
我怀疑你会达到你想要的效果; for x, y in zip(string, string2):
和list1
中的任何值对都不会相等。
也许您想查看str.startswith()
method?此外,如果您正在操作和测试文件名和路径,os.path
library具有您希望熟悉的功能。对于您在此处尝试的认为,os.path.join()
,os.path.splitext()
和os.path.commonprefix()
函数应该特别感兴趣。
请注意,您的list2
变量也需要调整。使用原始字符串,正斜杠或双斜杠:
path
因为path = r"C:\Users\bg\Documents\Brent"
path = "C:\\Users\\bg\\Documents\\Brent"
path = "C:/Users/bg/Documents/Brent"
是退格的转义码。
答案 1 :(得分:1)
您尚未定义 !!无论如何我从你的问题文本中理解你的问题!! string
和string2
将list1
中的元组与list2
中的 对应的 元组进行比较,我自己作为初学者将以另一种方式进行此操作。< / p>
>>> 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
>>>