根据数字列表检查字母

我有一个字符串

p = "asfdasdf"

和一个像

a = [1,3,6]

我想检查字符串中的字母,列表中的数字表示。我的意思是,'sd d' (2rd, 4th, 7th)

我试过这个

print(p[a])

但是失败了。我应该怎么办?

另外,我想知道我该怎么做

打印(p[1,3,6])

这在python中可能吗?它在 R 中运行良好,但在 Python 中运行良好。


慕的地6264312
浏览 180回答 4
4回答

呼啦一阵风

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

jeck猫

我不完全确定我理解你的问题,但也许你正在寻找这样的东西: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,通过尝试使其更紧凑来降低代码效率很容易)。

慕工程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,这些变得非常方便。也少有显着优势易于阅读更小的代码 => 更少的编译时间,更少的维护,更少的错误机会更少的临时变量

开满天机

您的代码是错误的,因为如果计算机读取,它将变为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))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python