假设你有3个列表
List1 = [['_', '_', '_'], ['_', '_', '_'], ['_','_','_']]
List2 = [['Test', 'Word', 'Sudo'], ['Fu', 'Lu', 'Shou'], ['Ham', 'Spam', 'Eggs']]
List3 = [3, 5, 7,]使用List3中的值,我希望将'Fu'从List2[0][2]转换为List1[0][2],因为List3的第一个值是3,这意味着从List2中提取第三个值(从0开始计算,它是list2),并将其放在与List1相同的位置
使用List3中的其他值,最终结果应该是:
List1 = [['_', '_', 'Fu'], ['_', 'Shou', '_'], ['Spam','_','_']]我已经试了几个小时了,但就是不能让它工作!
这是怎么做的?
发布于 2013-04-11 03:00:11
# If you must have original data as lists of lists:
def flat(lst):
ret = []
for x in lst:
if hasattr(x, '__iter__'):
ret += flat(x)
else:
ret.append(x)
return ret
List1 = [['_', '_', '_'], ['_', '_', '_'], ['_','_','_']]
List2 = [['Test', 'Word', 'Sudo'], ['Fu', 'Lu', 'Shou'], ['Ham', 'Spam', 'Eggs']]
List3 = [3, 5, 7,]
lst1 = flat(List1)
lst2 = flat(List2)
# Now given flat lists, you can just do this:
def splitby(x, n=3):
i = iter(x)
while True:
yield [next(i) for _ in range(n)]
for i in List3:
lst1[i] = lst2[i]
print list(splitby(lst1))https://stackoverflow.com/questions/15933807
复制相似问题