我有一个名称和代码列表,如字符串所示:
['Daniel', '5104', 'peter', '9770']
如何按此顺序更改它,列出每个名称和编号,并用它们更新第一个列表,如下所示:
[['Daniel', '5104'], ['peter', '9770']]
最后,我将按照以下顺序在csv
文件中写入该列表:
daniel,5104
peter,9770
这是我的代码,用于将数据写入.csv
文件:
with open('code.csv', 'w', newline='') as output_file_name:
writer = csv.writer(output_file_name)
writer.writerows(data)
output_file_name.close()
答案 0 :(得分:2)
您可以通过列表理解来做类似的事情。
l = ['Daniel', '5104', 'peter', '9770']
print([l[i:i+2] for i in range(0, len(l), 2)])
答案 1 :(得分:1)
您也可以使用:
lst = ['Daniel', '5104', 'peter', '9770']
print zip(lst[::2], lst[1::2])
>>> [('Daniel', '5104'), ('peter', '9770')]
lst[1::2]
代表“ lst,从索引1开始,每2个元素取一个元素”
答案 2 :(得分:0)
您可以使用islice
中的itertools
。下面的代码应该可以工作。
from itertools import islice
input = ['Daniel', '5104', 'peter', '9770']
print(list(zip(islice(input,0, len(input), 2), islice(input,1, len(input), 2))))
输出:
[('Daniel', '5104'), ('peter', '9770')]
如果只想列出,则可以执行以下操作。
print(list(map(list, zip(
islice(input,0, len(input), 2),
islice(input,1, len(input), 2)
))))
答案 3 :(得分:0)
如果您提前知道列表的形状,则可以按定义的步骤遍历列表,以便以正确的顺序获取数据。例如,如果列表始终看起来像这样:
['name1','number1','name2','number2',...]
其中name1
与number1
相关联,name2
与number2
相关联...,您可以使用步骤2的for循环,这样您将获得所有名称,并且可以轻松获取数字,例如:
myInputList = ['name1','number1','name2','number2']
myOutputList = []
for i in range(0,len(myList),2):
myOuputList.append([myInputList[i],myInputList[i+1])
它应该像这样工作。
希望有帮助。