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

用“ while”循环向后重复字符串的最有效方法是什么?

用“ while”循环向后重复字符串的最有效方法是什么?

慕沐林林 2021-04-09 18:15:16
我知道必须有一个更好的方法,用更少的代码行,如何反转“ some_numbers”中的数字?some_numbers =[1,2,3,4,5,6,7,8,9,11,22,33,44,55,66,77]new_string = []print('some_numbers string: ',some_numbers)print('new_string string: ',new_string)#pop the last variable and insert into 'new_string'new_string.insert(-1,some_numbers[-1])#begin loopwhile some_numbers:        #insert the pops from some_numbers into new string in a reverse order    new_string.insert(-1,some_numbers.pop())#delete redundant number at the end of listdel new_string[-1]print("some_numbers string: ",some_numbers)  print("reversed string: ",new_string)
查看完整描述

3 回答

?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

您可以使用reversed内置的,如下所示:

print(list(reversed(some_numbers)))

注意:@coldspeed是正确的,它不是称为列表的字符串,因此我将其重命名

编辑:

试试这个:

print([some_numbers[len(some_numbers)-i-1] for i in range(len(some_numbers))])


查看完整回答
反对 回复 2021-04-27
?
慕丝7291255

TA贡献1859条经验 获得超6个赞

由于列表大小是固定的,因此使用for向后循环在这里也很有意义:


reversed_lst = []

for i in range(len(some_numbers)-1, -1, -1):

    reversed_lst.append(some_numbers[i])

或作为列表理解:


reversed_lst = [some_numbers[i] for i in range(len(some_numbers)-1, -1, -1)]

两者都给:


[77, 66, 55, 44, 33, 22, 11, 9, 8, 7, 6, 5, 4, 3, 2, 1]

注意:更多的pythonic解决方案将是使用reversed()或切片[::-1]


查看完整回答
反对 回复 2021-04-27
?
慕莱坞森

TA贡献1810条经验 获得超4个赞

只是为了汇编答案:

  1. 那不是一个字符串,它是一个列表(一个字符串是一个像“嘿”之类的词)。

  2. 您可以执行some_numbers.reverse(),现在列表已反转。或者,如果您不想覆盖列表,请致电reversed (list)

  3. 或者你可以得到some_numbers [::-1]。方括号中的数字(称为拼接)告诉Python如何查看列表。第一个数字(因为我们没有在列表的开头包含默认值)告诉了Python从哪里开始。第二个数字(默认为len (some_numbers))告诉Python在哪里停止。第三个数字(-1)告诉Python如何从一个数字移至下一个数字(在我们的情况下为1)。

  4. 如果您希望列表以相反的顺序排列,则应该这样做some_numbers.sort (reverse = True)。同样,如果您不想更改列表,而只想要一份副本,请致电sorted (some_numbers, reverse = True)


查看完整回答
反对 回复 2021-04-27
  • 3 回答
  • 0 关注
  • 246 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

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

帮助反馈 APP下载

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

公众号

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