我在python中有一个列表列表,我用它来为命令行可执行文件写入数据输入文件。可执行文件对某些输入字符串的长度有限制但不是全部。有没有办法重新调整我的'数组'中某个位置的所有元素的大小,以便:
1, test, 12, toronto
2, test, 145, montreal
3, test, 178, north bay
会变成:
1, test, 12, to
2, test, 145, mo
3, test, 178, no
就编码而言,我认为这样的东西会迭代地工作,但我更喜欢一种方法来一次处理整个数组。
for x in list:
x[3] = x[3][:5] #where 5 is the length
答案 0 :(得分:1)
a = [ [1, 'test', 12, 'toronto'], [2, 'test', 145, 'montreal'] ]
a = [ [e [:5] if i == 3 else e for i, e in enumerate (line)] for line in a]
print (a)
i
要缩短您想要缩短的位置,如果是不同的列,请使用类似i in (3, 5)
的内容。
或者如果不同列的长度不同,可以使用以下内容:
a = [[1, 'test', 12, 'toronto'], [2, 'test', 145, 'montreal']]
shorten = {1: 2, 3: 4} #shorten column 1 to length 2, and col 3 to len 4
a = [[e[:shorten[i]] if i in shorten else e for i, e in enumerate(line)] for line in a]
print (a)
答案 1 :(得分:0)
my_list = [[1, 'test', 12, 'toronto'],
[2, 'test', 145, 'montreal'],
[3, 'test', 178, 'north bay']]
print map(lambda x: x[:2] + [x[3][:2]],[x for x in my_list])
输出
[[1, 'test', 12, 'to'], [2, 'test', 145, 'mo'], [3, 'test', 178, 'no']]