为了账号安全,请及时绑定邮箱和手机立即绑定

根据数字列表检查字母

根据数字列表检查字母

慕的地6264312 2022-06-22 17:35:37
我有一个字符串p = "asfdasdf"和一个像a = [1,3,6]我想检查字符串中的字母,列表中的数字表示。我的意思是,'sd d' (2rd, 4th, 7th)我试过这个print(p[a])但是失败了。我应该怎么办?另外,我想知道我该怎么做打印(p[1,3,6])这在python中可能吗?它在 R 中运行良好,但在 Python 中运行良好。

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))


查看完整回答
反对 回复 2022-06-22
?
jeck猫

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,通过尝试使其更紧凑来降低代码效率很容易)。


查看完整回答
反对 回复 2022-06-22
?
慕工程0101907

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,这些变得非常方便。也少有显着优势

  • 易于阅读

  • 更小的代码 => 更少的编译时间,更少的维护,更少的错误机会

  • 更少的临时变量


查看完整回答
反对 回复 2022-06-22
?
开满天机

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))


查看完整回答
反对 回复 2022-06-22
  • 4 回答
  • 0 关注
  • 117 浏览
慕课专栏
更多

添加回答

代码语言

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号