首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >正在尝试查找与数组中的项对应的项

正在尝试查找与数组中的项对应的项
EN

Stack Overflow用户
提问于 2019-02-11 16:45:31
回答 2查看 50关注 0票数 1

我面临的问题是,我似乎无法识别数组列表中的选定项。这有点复杂。基本上,我想要循环4次,每次循环遍历代码,将商品、商品编号、商品描述和保留价添加到一个单独的数组中。然而,由于它循环了4次,数组Finallist似乎已经将所有4个项和变量都附加到了它的列表中。这样做,导致我的代码在最后3行。(即Item =input(“请输入您想要的项目”)将不起作用,因为用户输入的项目将不可避免地打印4个项目及其变量的整个数组列表。然而,我只想把变量放在一个循环中。为了让你更清楚,例如,如果程序循环一次,项目将是猫,其项目编号将是123456,其描述将是“猫很可爱”,其保留价为1000,然而,如果我循环4次,程序将不得不打印所有4个项目和变量,而我只需要单个循环的项目及其变量。所以我只希望物品是猫,它的物品编号是123456,它的描述是“猫很可爱”,它的底价是1000,没有其他4个条目。我知道这个解释可能会令人困惑,但我希望它能让你更清楚。谢谢!

代码语言:javascript
运行
复制
ItemNum = []
description = []
ReservePrice = []
item = []
NumOfBids = 0
Finallist = []

for count in range (0,4):
  user3 = input("please enter your item ")
  item.append(user3)
  user = input("please input your item number. ")
  ItemNum.append(user)
  user1 = input("Please enter your description for the product ")
  description.append(user1)
  user2 = input("Please enter your reserve price for the thing ")
  ReservePrice.append(user2)
  Finallist.extend(item)
  Finallist.extend(ItemNum)
  Finallist.extend(description)
  Finallist.extend(ReservePrice)

Item = input("please enter your desired item")
if Item == Finallist:
  print(Finallist)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-02-11 17:15:53

试试if Item in Finallist:。这将检查在列表Finallist内是否有一个值为Item的对象。

另外,为什么你要.extend() FinalList呢?一个简单的append()就可以做到这一点,并避免数据的成倍增加。

编辑:

下面是对代码的修改:

代码语言:javascript
运行
复制
ItemNum = []
description = []
ReservePrice = []
item = []
NumOfBids = 0
Finallist = []

def print_item(item_list, item):
    start_index = item_list.index(item)
    print(item_list[start_index:start_index+4])

for count in range (0,4):
    user3 = input("please enter your item ")
    item.append(user3)
    user = input("please input your item number. ")
    ItemNum.append(user)
    user1 = input("Please enter your description for the product ")
    description.append(user1)
    user2 = input("Please enter your reserve price for the thing ")
    ReservePrice.append(user2)
    Finallist.append(user3)
    Finallist.append(user)
    Finallist.append(user1)
    Finallist.append(user2)

Item = input("please enter your desired item")
if Item in Finallist:
    print_item(Finallist, Item)

编辑:

get_item()函数的说明。

该函数利用了所谓的列表切片。

如果你有一个像example_list = ["a", "b", "c", "d", "e", "f"]这样的列表,我们可以通过example_list[2:4]访问像["c", "d"]这样的“子列表”

切片的工作原理类似于a_list[start:stop],它返回一个列表,其中包含startstopa_list的所有条目,其中包括索引为start的元素,但不包括索引为stop的条目。

+4的诀窍:

由于您有4个条目属于一个Item (ItemNameItemNumdescriptionReservePrice),因此我们总是希望找到ItemName的intex,并将其加上接下来的3个条目,而不是第4个条目。这是通过调用.index(item)来完成的,它检索item的索引。因此,item_list[start_index:start_index+4]返回以item开头并以其ReservePrice结尾的子列表,但不包括下一个ItemName

进一步阅读:About Slicing

票数 2
EN

Stack Overflow用户

发布于 2019-02-11 17:41:34

我从代码片段中去掉了一些不必要的东西。

代码语言:javascript
运行
复制
Finallist = []

for count in range (0,4):
    user1 = input("please enter your item ")
    user2 = input("please input your item number. ")
    user3 = input("Please enter your description for the product ")
    user4 = input("Please enter your reserve price for the thing ")
    Finallist.append(user1)
    Finallist.append(user2)
    Finallist.append(user3)
    Finallist.append(user4)

Item = input("please enter your desired item")
# check only every 4th item in the list
# if we found a match, print it and the next 3
for i range(0, len(Finallist), 4)
    if Item == Finallist[i]:
        print(Finallist[i], Finallist[i+1], Finallist[i+2], Finallist[i+3])
        break
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54626720

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档