Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:替换循环列表中的变量_Python_List_Loops - Fatal编程技术网

Python:替换循环列表中的变量

Python:替换循环列表中的变量,python,list,loops,Python,List,Loops,我正在尝试遍历一个列表,并使用第二个变量列表打印出该列表 问题是列表中的变量被分配和设置,但没有正确打印出来。这感觉很简单,但我已经被难倒了一天左右。任何帮助都将不胜感激 side = "" sideLong = "" sideShort = "" sideList = ["Right", "Left"] jointRemapList =[ ["Char_Hips", "Root_M"], ["Char_" + sideLong + "Finger1", "IndexFing

我正在尝试遍历一个列表,并使用第二个变量列表打印出该列表

问题是列表中的变量被分配和设置,但没有正确打印出来。这感觉很简单,但我已经被难倒了一天左右。任何帮助都将不胜感激

side = ""
sideLong = ""
sideShort = ""
sideList = ["Right", "Left"]


jointRemapList =[
    ["Char_Hips", "Root_M"],
    ["Char_" + sideLong + "Finger1", "IndexFinger1_" + sideShort],
    ["Char_" + sideLong + "Finger2", "IndexFinger2_" + sideShort]
    ]

for side in sideList:
    sideLong = side
    sideShort = side[0]

    for jointPair in jointRemapList:

        print sideLong, sideShort, jointPair
预期产出将是:

Left L ['Char_Hips', 'Root_M']
Left L ['Char_LeftFinger1', 'IndexFinger1_L']
Left L ['Char_LeftFinger2', 'IndexFinger2_L']
Right R ['Char_Hips', 'Root_M']
Right R ['Char_RightFinger1', 'IndexFinger1_R']
Right R ['Char_RightFinger2', 'IndexFinger2_R']

我认为问题的出现是因为您在
侧列表
循环之外创建了
jointRemapList
。您希望通过
sideLong
sideShort
动态创建列表,因此需要在循环的每个增量上重新创建它。例如:

side = ""
sideLong = ""
sideShort = ""
sideList = ["Right", "Left"]

for side in sideList:
    sideLong = side
    sideShort = side[0]

    jointRemapList =[
        ["Char_Hips", "Root_M"],
        ["Char_" + sideLong + "Finger1", "IndexFinger1_" + sideShort],
        ["Char_" + sideLong + "Finger2", "IndexFinger2_" + sideShort]
        ]

    for jointPair in jointRemapList:

        print sideLong, sideShort, jointPair

我认为问题的出现是因为您在
侧列表
循环之外创建了
jointRemapList
。您希望通过
sideLong
sideShort
动态创建列表,因此需要在循环的每个增量上重新创建它。例如:

side = ""
sideLong = ""
sideShort = ""
sideList = ["Right", "Left"]

for side in sideList:
    sideLong = side
    sideShort = side[0]

    jointRemapList =[
        ["Char_Hips", "Root_M"],
        ["Char_" + sideLong + "Finger1", "IndexFinger1_" + sideShort],
        ["Char_" + sideLong + "Finger2", "IndexFinger2_" + sideShort]
        ]

    for jointPair in jointRemapList:

        print sideLong, sideShort, jointPair

因此,问题是在创建
jointRemapList
时创建字符串,而对
sideLong
sideShort
的更新不会反映在这些字符串中,因为字符串是不可修改的。尝试改用字符串格式

from itertools import product

joint_remap_list = [
    ["Char_Hips", "Root_M"],
    ["Char_{side}Finger1", "IndexFinger1_{abbrev}"],
    ["Char_{side}Finger2", "IndexFinger2_{abbrev}"]
]

sides = ["Left", "Right"]

for side, pair in product(sides, joint_remap_list):
    abbrev = side[0]
    formatted = [s.format(side=side, abbrev=abbrev) for s in pair]
    print side, abbrev, formatted

因此,问题是在创建
jointRemapList
时创建字符串,而对
sideLong
sideShort
的更新不会反映在这些字符串中,因为字符串是不可修改的。尝试改用字符串格式

from itertools import product

joint_remap_list = [
    ["Char_Hips", "Root_M"],
    ["Char_{side}Finger1", "IndexFinger1_{abbrev}"],
    ["Char_{side}Finger2", "IndexFinger2_{abbrev}"]
]

sides = ["Left", "Right"]

for side, pair in product(sides, joint_remap_list):
    abbrev = side[0]
    formatted = [s.format(side=side, abbrev=abbrev) for s in pair]
    print side, abbrev, formatted

Python不会以这种方式保留指向变量的指针
“foo”+bar
不是后缀为“打印时的任何条”的字符串“foo”,
bar
立即求值,字符串为“foo”+“当前的任何条”。Python不会以这种方式保留指向变量的指针
“foo”+bar
不是字符串“foo”,后缀为“打印时的任何条”,
bar
立即计算,字符串为“foo”+“当前的任何条”。我同意这是更好的解决方案,虽然它会比贾里德的<代码> STR.Frase方法慢一点。我同意这是更好的解决方案,不过它会比贾里德的<>代码> St.Frase方法慢一点。考虑在一个单独的行上定义格式化列表。代码>fmtd_joint_pair=[s.format(long=sideLong,short=sideShort)表示jointPair中的s];打印边长,StDeScript,FMTDJEngIONGON/<代码>对我感觉更好。考虑在单独的行上定义格式化列表。代码>fmtd_joint_pair=[s.format(long=sideLong,short=sideShort)表示jointPair中的s];侧长、侧短、fmtd_join_pair打印对我来说感觉更好。