New submission from Mike Davies <michaeljamesdav...@gmail.com>:
I wish to create a list of pathlib.Paths by combining two lists of pathlib.Paths. I use two for loops to make every combination. However the output is not what one would expect (see no 'Program Files' is visible in the output). ########## INPUT: pa = [ Path('C:/Program Files'), Path('C:/') ] pb = [ Path('/one/two/three.exe'), Path('/four.exe') ] print( [a/b for a in pa for b in pb] ) ########### OUTPUT: [WindowsPath('C:/one/two/three.exe'), WindowsPath('C:/four.exe'), WindowsPath('C:/one/two/three.exe'), WindowsPath('C:/four.exe')] This is true whether I use for loops or list comprehensions. To get the expected output I need to change the Paths to strings, combine them, then convert them back to paths like this: ########### INPUT: print( [Path(str(a)+str(b)) for a in pa for b in pb] ) ########### OUTPUT: [WindowsPath('C:/Program Files/one/two/three.exe'), WindowsPath('C:/Program Files/four.exe'), WindowsPath('C:/one/two/three.exe'), WindowsPath('C:/four.exe')] Interestingly if I print only 'a' I get the expected answer: ########### INPUT: print( [a for a in pa for b in pb] ) ########### OUTPUT: [WindowsPath('C:/Program Files'), WindowsPath('C:/Program Files'), WindowsPath('C:/'), WindowsPath('C:/')] And the same is true if I print only 'b': ########### INPUT: print( [b for a in pa for b in pb] ) ########### OUTPUT: [WindowsPath('/one/two/three.exe'), WindowsPath('/four.exe'), WindowsPath('/one/two/three.exe'), WindowsPath('/four.exe')] Additionally in some cases it does give the correct answer. Here is a similar example where the answer is correct: ########### INPUT: pa = [Path('C:/'), Path('D:/')] pb = [Path('a.exe'), Path('b.exe')] print( [a/b for a in pa for b in pb] ) ########### OUTPUT: [WindowsPath('C:/a.exe'), WindowsPath('C:/b.exe'), WindowsPath('D:/a.exe'), WindowsPath('D:/b.exe')] ---------- components: Windows messages: 338156 nosy: Mike Davies, paul.moore, steve.dower, tim.golden, zach.ware priority: normal severity: normal status: open title: pathlib.Path unexpected (wrong) behaviour when combining paths in a for loop type: behavior versions: Python 3.7 _______________________________________ Python tracker <rep...@bugs.python.org> <https://bugs.python.org/issue36334> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com