4 回答

TA贡献1802条经验 获得超6个赞
a是 a list,如果你想访问list/的任何项目,string那么你需要一个索引,你喂什么是 alist所以它不会接受这样的。
p = "asfdasdf"
a = [1,3,6]
output = []
for i in a:
output.append(p[i])
print(' '.join(output))

TA贡献1909条经验 获得超7个赞
我不完全确定我理解你的问题,但也许你正在寻找这样的东西:
print([p[x] for x in a])
--> ['s', 'd', 'd']
p这会在使用 in 的索引值时创建字符的列表理解,a并将其打印在同一行中。
如果你想要它作为一个字符串:
print(' '.join([p[x] for x in a]))
--> s d d
还请记住一点:代码的整体时间复杂度不是行数的函数。换句话说,行数更少并不意味着代码更高效(而对于 Python,通过尝试使其更紧凑来降低代码效率很容易)。

TA贡献1887条经验 获得超5个赞
你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 value
for each in my_list[:-1]:
str_out = str_out + each
print(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,这些变得非常方便。也少有显着优势
易于阅读
更小的代码 => 更少的编译时间,更少的维护,更少的错误机会
更少的临时变量
没有找到匹配的内容?试试慕课网站内搜索吧

TA贡献1786条经验 获得超13个赞
您的代码是错误的,因为如果计算机读取,它将变为
p[[1, 3, 6]]
这是非法的,在 Python 中不可用,但你可以使用 for 语句!你需要使用:
使用for语句
p = "asfdasdf"
a = [1, 3, 6]
for x in a:
print(p[x], end='')
print('')
但这是一种愚蠢的方式,所以不要使用for语句,而是使用列表推导
p = "asfdasdf"
a = [1, 3, 6]
print(''.join(p[x] for x in a))
添加回答
举报