Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在使用元组列表并尝试打印特定部分的数据时,如何在python的for循环中进行迭代?_Python_Loops_Tuples - Fatal编程技术网

在使用元组列表并尝试打印特定部分的数据时,如何在python的for循环中进行迭代?

在使用元组列表并尝试打印特定部分的数据时,如何在python的for循环中进行迭代?,python,loops,tuples,Python,Loops,Tuples,因此,我的计划目标是向每个人分发两种不同价值的物品 程序接收一个数字和元组列表。当我挑选第一件物品时,所有的人都跟着我 拣选的顺序是:第一个人一路拣到最后一个,然后再拣到最后一个,然后再向后拣到第一个 现在我正在努力理解如何使用for循环遍历这些元组并打印出我选择的两个项目。要计算出有多少人在实际尝试获取物品,可以将所有可用物品除以2。我对此也感到困惑 ex输入: (0, [('pizza', 12), ('chicken', 10),] ) 因此,在这个例子中,程序应该打印出:“比萨饼:12

因此,我的计划目标是向每个人分发两种不同价值的物品

程序接收一个数字和元组列表。当我挑选第一件物品时,所有的人都跟着我

拣选的顺序是:第一个人一路拣到最后一个,然后再拣到最后一个,然后再向后拣到第一个

现在我正在努力理解如何使用for循环遍历这些元组并打印出我选择的两个项目。要计算出有多少人在实际尝试获取物品,可以将所有可用物品除以2。我对此也感到困惑

ex输入:

(0, [('pizza', 12), ('chicken', 10),] )

因此,在这个例子中,程序应该打印出:“比萨饼:12只鸡:10”

以确保我正确回答了问题:

  • 有n个项目和n/2个人
  • 列表中的第一个人获得最佳(最高值)和最差(最低值)项。第二个人得到第二好的项目和第二差的项目,等等
  • 列表中有k个人在你后面,因此你处于n/2-k位置
  • 您想知道列表中有哪两项
如果你只想知道你得到的两个项目,你不需要一个循环。您可以按值对项目进行排序,计算列表中属于您的两个索引。它们将是n/2-k-1(注意,指数是零基的!),n/2+k:

def which_items_do_i_get(people_after_me, items):
    # Get items sorted by value
    sorted_items = sorted(items, key=lambda x: -x[1])
    # Determine number of people
    number_of_people = len(items) // 2
    assert len(items) % 2 == 0  # Must be an even number of items
    assert people_after_me < number_of_people  # Need more items
    # Determine first and second item
    first_item = sorted_items[number_of_people - people_after_me - 1]
    second_item = sorted_items[number_of_people + people_after_me] 
    # Print them out
    for item_name, item_value in first_item, second_item:
        print '%s: %d' % (item_name, item_value)
def我得到哪些项目(人在我之后,项目):
#获取按值排序的项目
已排序的\项=已排序(项,项=λx:-x[1])
#确定人数
人数=len(项目)//2
assert len(items)%2==0#必须是偶数个项
在我之后断言人<人的数量#需要更多物品
#确定第一项和第二项
first_item=已排序的_items[人数\u人-人数\u后-1]
第二项=已排序的项[人数+我之后的人数]
#打印出来
对于项目名称,第一个项目中的项目值,第二个项目:
打印“%s:%d%”(项目名称,项目值)

是的,我们的目标显然是挑选最好的物品,所以你必须删除以前的人会拿走的物品。哦,我明白了。那就先按值排序吧。更新了解决方案。