好了,我已经包含了我写的代码,当它打印列表时我得到的问题是:你给这对香蕉,巧克力两次(一次是香蕉,巧克力,一次是巧克力,香蕉)。我确实找到了没有这个问题的代码,但我的问题是我不明白它是如何解决这个问题的,这违背了目的。
我代码:
FLAVORS = [
"Banana",
"Chocolate",
"Lemon",
"Pistachio",
"Raspberry",
"Strawberry",
"Vanilla",
]
for x in FLAVORS:
for y in FLAVORS:
if x != y:
print(x + ", " + y)
的工作代码,但我不明白:
FLAVORS = [
"Banana",
"Chocolate",
"Lemon",
"Pistachio",
"Raspberry",
"Strawberry",
"Vanilla",
]
for flavor_one in FLAVORS:
for flavor_two in range(FLAVORS.index(flavor_one)+1,len(FLAVORS)):
print(flavor_one + ", " + FLAVORS[flavor_two])
好吧,如果我明白你要求你的代码工作,你可以在下面的代码编辑。代码中发生的事情是,检查flavor的范围,然后将名为FLAVORS的列表添加到索引中。你把索引指向x;然后它检查flavor的长度,这就是代码确认你没有得到巧克力香蕉和香蕉巧克力的地方。这一切都发生在range(FLAVORS.index(x)+1,len(FLAVORS)):
中从你打印第一种味道(x),第二种味道开始。当您将FLAVORS转换为索引时,FLAVORS[y]
指向前一行。
另外,这里是index的语法,因为我假设这是让你困惑的。
语法list.index (elmnt)
for x in FLAVORS:
for y in range(FLAVORS.index(x)+1,len(FLAVORS)):
if x != y:
print(x + ", " + FLAVORS[y])