我正在尝试编写一个序列来获取一维列表(无论大小)并将其打印在2列中。到目前为止,我一直在返回“索引超出范围”错误。
理想情况下,我希望它将[0]索引打印为标题(我已经写入序列),然后将其他索引打印出来,如下所示:
- - - - - - - - - - - - - - - - - - - - - - - - -
NAMES
- - - - - - - - - - - - - - - - - - - - - - - - -
Rudolph S. Vena U.
Josef M. Efrain L.
Joye A. Mee H.
Joni M. Tanya E.
Rachelle L. Garrett H.
到目前为止,我已经看到很多使用.zip(*)和其他类似类似的方法的例子,但通常涉及我没有的二维列表。有没有人知道如何改进它?
spacing = '- ' * 25
data_list = [ "NAMES",
"Rudolph S.",
"Josef M.",
"Joye A.",
"Joni M.",
"Rachelle L.",
"Vena U.",
"Efrain L.",
"Mee H.",
"Tanya E.",
"Garrett H."]
while True:
fname_prompt = input("First Name: ").strip().capitalize()
if fname_prompt == "List" or fname_prompt == "list" or fname_prompt == "LIST":
for item, val in enumerate(data_list):
if item == 0:
print(spacing)
print('{:>27s}'.format(str(data_list[item])))
print(spacing)
else:
if item <= len(data_list):
print('{:<10s}'.format(str(data_list[item]) + '{:>20s}'.format(str(data_list[item +1]))))
else:
break
答案 0 :(得分:1)
你可以尝试这样的格式:
import argparse
import subprocess as sp
import ast
def main():
parser = argparse.ArgumentParser()
parser.add_argument('--dict', help='Directory and Files', required=True, type=str)
args = parser.parse_args()
try:
for folder, files in ast.literal_eval(args.dict).items():
for file in files:
sp.call(["rm -r", folder+file])
except Exception as e:
print (e)
if __name__ == '__main__':
main()
答案 1 :(得分:1)
希望以下代码有所帮助。
if fname_prompt.lower() == "list":
for item, val in enumerate(data_list):
if item == 0:
print(spacing)
print('{:>27s}'.format(str(data_list[item])))
print(spacing)
else:
cut_off = int((len(data_list)+1)/2)
for i in range(1,int(len(dat_list)/2)):
print (data_list[i], '\t\t\t' , data_list[cut_off+i])
您也可以更改第一个if (item==0)
条件,但我会让您按照自己想要的方式保留它。希望它有所帮助。
快乐编码:)
答案 2 :(得分:1)
more-itertools包执行此操作。特别是divide method。