如何正确切片循环?

时间:2019-02-22 12:47:50

标签: python python-3.x list

我想反转一个for循环,使它停止在用户输入的某个值上。

例如,如果有一个列表Hello = [1,2,3,4,5,6,7,8] 然后用户输入5 有没有办法获取输出

4

5

6

7

8

我尝试过

user_input = str(input(''))


for i in range(user_input):

   print(Hello[-i -1])

例如我输入5,

我得到了输出

8

7

6

5

4

4 个答案:

答案 0 :(得分:5)

这是一种简单的方法:

user_input = int(input())

Hello = [1,2,3,4,5,6,7,8]
print(Hello[-user_input:])
  

输出:

     

[4, 5, 6, 7, 8]

如果您希望每个数字都打印在自己的行上,则可以这样做:

user_input = int(input())

Hello = [1,2,3,4,5,6,7,8]
print(*Hello[-user_input:], sep='\n')
  

输出:

4
5
6
7
8

答案 1 :(得分:0)

您可以使用python切片和索引方法来实现此目的。

index()方法在列表中找到给定的元素并返回其位置。

代码:

hello = [1,2,3,4,5,6,7,8]
i = int(input('enter number: '))

if i in hello and hello.index(i) > 0:
    print(l[hello.index(i)-1:])

else:
    print('cant do this')

注释:

您应该检查元素是否存在于列表中,或者使用try:来扭曲您的声明,否则,如果用户在列表中未输入数字,则会出现ValueError。

如果用户输入列表中的第一个元素,否则将获得意外的价值。

答案 2 :(得分:0)

我的理解是,您需要在列表中找到输入值的索引,并将列表从索引前的一个值切到末尾:

start = Hello.index(user_input) - 1
print(Hello[start:])

答案 3 :(得分:0)

如果要反转列表,可以使用list.reverse()。 这样,该代码即可完成您所提及的内容,您可以使用以下代码:

Hello = [1,2,3,4,5,6,7,8]
a = int(input("Please input your number: "))
if a <= len(Hello):
    Hello.reverse()
    print(Hello[:a])
else:
    print("The value is too big")