python 当列表中有1个元素时,在循环中输出一个元素[重复]

pexxcrt2  于 2023-05-27  发布在  Python
关注(0)|答案(4)|浏览(116)

此问题已在此处有答案

How slicing in Python works(38回答)
16小时前关门了。
有这样一个任务:
我有一个清单:

a = ["1", "2"]

for循环:

for i in range(0, 2):
    print(a[i])

但是如果列表只有一个元素:

a = ["1"]

则会出现错误:索引错误:列表索引超出范围
怎样才能保持结构

for i in range(0, 2):
dsf9zpds

dsf9zpds1#

您可以使用try:except块来处理此问题

a = ["1"]

for i in range(0, 2):
    try:
        print(a[i])
    except IndexError:
        break

但一般来说,最好是遍历列表本身

for i in a:
    print(i)
rdlzhqv9

rdlzhqv92#

直接遍历列表:

a = ["1", "2"]

for i in a:
    print(i)

如果你特别想迭代a的索引而不是它的元素(注意,大多数时候这是不必要的复杂,你不应该这样做),基于alen构建range,而不是指定一个硬编码的数字,如2:

for i in range(len(a)):
    print(a[i])
xqk2d5yq

xqk2d5yq3#

你可以在不使用range的情况下使用for,而只使用列表示例,例如。

print("list with many elements")
a = ["1","2","3"]
for i in a:
    print(i)
print("list with one element")
b = ["1"]
for i in b:
    print(i)

给出输出

list with many elements
1
2
3
list with one element
1
tcomlyy6

tcomlyy64#

不是在索引范围内迭代,而是直接在列表的切片上迭代。这里有用的是,例如,如果列表的元素少于10个,lst[:10]不会失败-它只是给出所有元素。
在你的例子中:

a = ["1"]
for x in a[:2]:
    print(x)

它只打印1
这就是为什么你应该更喜欢像for object in collection这样的循环而不是for index in range_of_indexes的原因之一。

相关问题