python: list1 的索引等于 list2 的索引
python: index of list1 equal to index of list2
我有 2 个列表,它们的长度相同且顺序正确,我需要(我认为)是列表 1 的索引等于列表 2 的索引,并在该索引处打印列表 2 的内容。
这是我目前所拥有的:
id = [10610, 12772, 10611, 13434, 13397, 13854]
name = ['sarah', 'john', 'mark', 'james', 'jack']
userid = int(input('enter user ID: '))
ind = id.index(userid)
if userid in id:
print(ind)
else:
print('wrong ID')
输出:
enter user ID: 13434
3
我想要它做的是,打印“名称”列表中相同索引处的内容,在本例中为“james”
谢谢
您只需执行以下操作:
id = [10610, 12772, 10611, 13434, 13397, 13854]
name = ['sarah', 'john', 'mark', 'james', 'jack']
userid = int(input('enter user ID: '))
ind = id.index(userid)
if userid in id:
print(name[ind]) # Change in this line
else:
print('wrong ID')
好吧,按照评论所说的那样进行更改,如下所示:
id = [1, 2, 3, 4, 5, 6]
name = ['sarah', 'john', 'mark', 'james', 'jack']
userid = int(input('enter user ID: '))
if userid in id:
ind = id.index(userid) #notice this statement is inside the if and not outside
print(name[ind])
else:
print("wrong id")
如果你在检查 userid(他们输入的)是否在 id 之前尝试使用 inden(..),那么你将得到 ValueError: <some-numer> is not in list
所以最好在 if
中进行
由于要在同一索引处打印来自name
的字符串,可以使用name[ind]
.
不过,上面给出的代码还有一些其他问题 -
- if-else 条件没有执行任何操作。如果
userid
不在 id
列表中,ind = id.index(userid)
将给出 ValueError
,程序将崩溃。这可以重构为以下内容:
id = [10610, 12772, 10611, 13434, 13397, 13854]
name = ['sarah', 'john', 'mark', 'james', 'jack']
userid = int(input('enter user ID: '))
if userid in id:
print(name[id.index(userid)])
else:
print('wrong ID')
id
和name
中的元素个数不一样。当输入为 13854 时,这可能导致 IndexError
。这可以通过检查 len(name) < ind
来解决
- 使用两个列表不是一个非常干净的方法。对任一数组的任何操作都可能改变数据的映射。更好的方法是使用字典。
users = {
"10610": "sarah",
"12772": "john",
"10611": "mark",
"13434": "james",
"13397": "jack",
"13854": None
}
userid = input('enter user ID: ')
print(users.get(userid, "Wrong User ID"))
我有 2 个列表,它们的长度相同且顺序正确,我需要(我认为)是列表 1 的索引等于列表 2 的索引,并在该索引处打印列表 2 的内容。
这是我目前所拥有的:
id = [10610, 12772, 10611, 13434, 13397, 13854]
name = ['sarah', 'john', 'mark', 'james', 'jack']
userid = int(input('enter user ID: '))
ind = id.index(userid)
if userid in id:
print(ind)
else:
print('wrong ID')
输出:
enter user ID: 13434
3
我想要它做的是,打印“名称”列表中相同索引处的内容,在本例中为“james”
谢谢
您只需执行以下操作:
id = [10610, 12772, 10611, 13434, 13397, 13854]
name = ['sarah', 'john', 'mark', 'james', 'jack']
userid = int(input('enter user ID: '))
ind = id.index(userid)
if userid in id:
print(name[ind]) # Change in this line
else:
print('wrong ID')
好吧,按照评论所说的那样进行更改,如下所示:
id = [1, 2, 3, 4, 5, 6]
name = ['sarah', 'john', 'mark', 'james', 'jack']
userid = int(input('enter user ID: '))
if userid in id:
ind = id.index(userid) #notice this statement is inside the if and not outside
print(name[ind])
else:
print("wrong id")
如果你在检查 userid(他们输入的)是否在 id 之前尝试使用 inden(..),那么你将得到 ValueError: <some-numer> is not in list
所以最好在 if
中进行由于要在同一索引处打印来自name
的字符串,可以使用name[ind]
.
不过,上面给出的代码还有一些其他问题 -
- if-else 条件没有执行任何操作。如果
userid
不在id
列表中,ind = id.index(userid)
将给出ValueError
,程序将崩溃。这可以重构为以下内容:
id = [10610, 12772, 10611, 13434, 13397, 13854]
name = ['sarah', 'john', 'mark', 'james', 'jack']
userid = int(input('enter user ID: '))
if userid in id:
print(name[id.index(userid)])
else:
print('wrong ID')
id
和name
中的元素个数不一样。当输入为 13854 时,这可能导致IndexError
。这可以通过检查len(name) < ind
来解决
- 使用两个列表不是一个非常干净的方法。对任一数组的任何操作都可能改变数据的映射。更好的方法是使用字典。
users = {
"10610": "sarah",
"12772": "john",
"10611": "mark",
"13434": "james",
"13397": "jack",
"13854": None
}
userid = input('enter user ID: ')
print(users.get(userid, "Wrong User ID"))