慕工程0101907
你print(p[a])不是 Python 中的有效语句。如果您能够用任何其他语言做同样的事情,那是因为该语言的特殊功能。在 Python 中,我们也有一些特别的东西。我们称它们为list-comprehensions。首先让我们学习,如何从您的字符串中获取字符串字符p。>>> p = "asfdasdf">>> p'asfdasdf'>>> a = [1,3,6]>>> p[a[1]]'s'>>> p[a[3]]'d'>>> p[a[6]]'d'现在下一步如果要构造一个字符串这个值列表(['s', 'd', 'd'])。之后构建一个带有分隔符的字符串作为空格()。下面是你平时的做法my_list = []for a_i in a: my_list.append(p[a_i]) my_list.append(" ") # adding spaces# At the end of this above loop, my_list look like ['s', ' ', 'd', ' ', 'd', ' ']str_out = ""# now my_list[:-1], look like ['s', ' ', 'd', ' ', 'd'] # exclude last valuefor each in my_list[:-1]: str_out = str_out + eachprint(str_out)# print `s d d`列表理解现在,让我们使用一个列表推导来生成这个 list( [p[each] for each in a]) 并将这个输出直接传递给一个内置函数。join将负责在 list( ['s', ' ', 'd', ' ', 'd']) 中的字符串变量之间添加空格,然后将它们组合成s d d>>> ' '.join([p[each] for each in a])'s d d'>>>随着人们习惯了 python,这些变得非常方便。也少有显着优势易于阅读更小的代码 => 更少的编译时间,更少的维护,更少的错误机会更少的临时变量