【发布时间】:2021-11-10 04:12:07
【问题描述】:
我有一些代码从用户那里获取输入并将其存储在一个列表中。该列表可能有奇数或偶数个元素,例如:
my_list = ['Beef','Chicken','Eggs','Lamb','Nuts','Pork'](偶数个元素)
或my_list = ['Beef','Chicken','Eggs','Lamb','Nuts','Pork','Potatoes'](奇数个元素)
我想将my_list 存储在一个字符串变量中,这样当我print(var) 或创建一个tkinter 消息框时,我的程序将输出如下两列:
-- Beef --Chicken
-- Eggs --Lamb
-- Nuts --Pork
-- Potatoes
我知道如何操作字符串,但我一直坚持创建列。我试过这个:
for x,y in zip(my_list[0::2], my_list[1::2]):
print("{0} {1}".format(x, y))
但这不适用于奇数长度的列表。 我也尝试过更复杂的:
#When my_list = ['Beef','Chicken','Eggs','Lamb','Nuts','Pork','Potatoes']
list1 = []
list2 = []
while len(my_list) != 0:
list1.append(my_list[0])
my_list.pop(0)
if len(my_list) == 0:
list2.append('')
else:
list2.append(my_list[0])
my_list.pop(0)
for i in range (len(list1)):
blank_space = 40 - len(list1[i-1])
string2 = "\n--" + list1[i] + ' '*blank_space + '--' + list2[i]
string1 = string1 + string2
print(string1)
但我得到的输出是这样的:
--Beef --Chicken
--Eggs --Lamb
--Nuts --Pork
--Potatoes --
没有正确对齐列。
除了将其拆分为列之外,输出格式也很重要:
--Element1 --Element2
--Element3 --Element4
而不是任何其他形式。对于我犯错的地方,我真的很感激任何帮助。如果您需要更多说明,请告诉我,我会将其添加到我的问题中。
编辑: 该函数必须适用于所有这些列表:
my_list = ['Beef','Chicken','Eggs','Lamb','Nuts','Pork']
my_list = ['Beef','Chicken','Eggs','Lamb','Nuts','Pork','Potatoes']
my_list = ['Beef','Chicken','Eggs','Lamb','Nuts','Pork','Potatoes','Dairy']
my_list = ['Australian Beef','Chicken','Eggs','Lamb','Nuts','Pork','Potatoes','Dairy']
第二次编辑
我终于意识到为什么有时它不对齐。空格数是正确的,所以你所有的答案都是正确的。不幸的是,因为有些字母比其他字母更薄,所以列不会很好地对齐(至少在 Python IDLE 和 Tkinter 中)。例如,iiii 比 Python 中的 mmmm 短。有没有办法解决这个问题?
【问题讨论】:
-
"但这不适用于奇数长度的列表。"你能想出一种方法来提前判断列表的长度是否为奇数吗?如果检测到这种情况,能不能想办法分开处理? (提示:如果您只是删除列表的最后一个元素会发生什么?如果您将您的技术用于该结果列表,您能想出一种简单的方法来修复该输出吗?)
-
"未正确对齐列" 当您计算
blank_space数量时,您使用list1的哪个元素?同时通过循环,list1的哪个元素你用对应数量的blank_space填充?你明白为什么这会导致问题吗? -
顺便说一句,您应该尝试research 了解 Python 中的字符串格式。内置了强大的工具,这意味着您不必自己计算空间量。
-
感谢您回复@KarlKnechtel,我可以检测列表是奇数还是偶数,但我无法删除任何元素。我也意识到我在一行中使用
i而在另一行中使用i+1的问题,感谢您指出这一点!不幸的是,在我修复它之后它仍然无法正常工作。我对字符串格式进行了研究,但无法成功应用它 -
"但我无法删除任何元素。"你不知道如何在 Python 中从列表中删除一个元素?如果您尝试使用搜索引擎来解决这个问题呢? “我对字符串格式进行了研究,但无法成功应用它”如果您向我们展示它,我们只能帮助您尝试(现在可能作为一个不同的问题,使用专注于该特定任务的代码)。跨度>
标签: python python-3.x list multiple-columns