修改列表保持的元组

我与它的元组看起来像这样的列表:修改列表保持的元组

my_list = (u'code', u'somet text', u'integer', [(u'1', u'text1'), (u'2', u'text2'), (u'3', u'text3'), (u'4', u'text4'), (u'5', u'text5')]) 

我想遍历my_list[3]和复制休息,所以我会得到n个列表看起来像这样:

(u'code', u'somet text', u'integer', u'1', u'text1') 

(u'code', u'somet text', u'integer', u'2', u'text2')

(u'code', u'somet text', u'integer', u'3', u'text3')

(u'code', u'somet text', u'integer', u'4', u'text4')

(u'code', u'somet text', u'integer', u'5', u'text5')

我一直在使用一个for循环试过,但我结束了这一点:

((u'code', u'somet text', u'integer'), (u'1', u'text1')) 

((u'code', u'somet text', u'integer'), (u'2', u'text2'))

((u'code', u'somet text', u'integer'), (u'3', u'text3'))

((u'code', u'somet text', u'integer'), (u'4', u'text4'))

((u'code', u'somet text', u'integer'), (u'5', u'text5'))

此外,我使用的代码根本感觉不到pythonic,my_list[3]可能长度不同。

my_list = (u'code', u'somet text', u'integer', [(u'1', u'text1'), (u'2', u'text2'), (u'3', u'text3'), (u'4', u'text4'), (u'5', u'text5')]) 

my_modified_list = my_list[0:3]

last_part_of_my_list = my_list[3]

for i in last_part_of_my_list:

print (my_modified_list, i)

回答:

可以实现与+这种使用简单的元组串联:

nlists = [my_list[:-1] + tpl for tpl in my_list[-1]] 

[(u'code', u'somet text', u'integer', u'1', u'text1'),

(u'code', u'somet text', u'integer', u'2', u'text2'),

(u'code', u'somet text', u'integer', u'3', u'text3'),

(u'code', u'somet text', u'integer', u'4', u'text4'),

(u'code', u'somet text', u'integer', u'5', u'text5')]

回答:

首先解开你的元组: a,b,c,d = my_list 这当然,假定4个元素正是你的元组,否则你会得到一个例外。 然后遍历d:

for d1,d2 in d: print('({},{},{},{},{})'.format(a,b,c,d1,d2))

回答:

你可以只遍历并与operator+加入他们:

fixed = my_list[:3] # this becomes (u'code', u'somet text', u'integer') 

new_list = [fixed + x for x in my_list[3]] # list comprehension to build new list

您必须在您的术语小心。你叫你的变量my_list,但围绕变量的全部内容的()使它变成tuple而不是list。然而,您的my_list[3]listtuples。这两个容器都支持连接的operator+

因此,使用该解决方案(这是Python的并与工作正大小my_list[3]),你可以把它读作:

new_listfixed变量的列表,以及每个元素在当前元素my_list[3]

根据您目前的数据你会得到一个list(再次,与[]):

[(u'code', u'somet text', u'integer', u'1', u'text1'), 

(u'code', u'somet text', u'integer', u'2', u'text2'),

(u'code', u'somet text', u'integer', u'3', u'text3'),

(u'code', u'somet text', u'integer', u'4', u'text4'),

(u'code', u'somet text', u'integer', u'5', u'text5')]

回答:

你可以试试这个:

my_list = (u'code', u'somet text', u'integer', [(u'1', u'text1'), (u'2', u'text2'), (u'3', u'text3'), (u'4', u'text4'), (u'5', u'text5')]) 

new_list = [(my_list[0], my_list[1], my_list[2], i[0], i[-1]) for i in my_list[3:][0]]

回答:

你也可以试试这个:

from itertools import repeat 

my_list = (u'code', u'somet text', u'integer', [(u'1', u'text1'), (u'2', u'text2'), (u'3', u'text3'), (u'4', u'text4'), (u'5', u'text5')])

result = [x + y for x, y in zip(repeat(my_list[:3], len(my_list[3])), my_list[3])]

print(result)

,输出:

[('code', 'somet text', 'integer', '1', 'text1'), 

('code', 'somet text', 'integer', '2', 'text2'),

('code', 'somet text', 'integer', '3', 'text3'),

('code', 'somet text', 'integer', '4', 'text4'),

('code', 'somet text', 'integer', '5', 'text5')]

回答:

您也可以尝试不循环,并在短短的一行没有导入任何外部模块或复杂逻辑,这里是lambda方法:

my_list = (u'code', u'somet text', u'integer', [(u'1', u'text1'), (u'2', u'text2'), (u'3', u'text3'), (u'4', u'text4'), (u'5', u'text5')]) 

print((list(map(lambda v:list(map(lambda y:(y+my_list[:3]),v)),my_list[3:]))))

输出:

[[('1', 'text1', 'code', 'somet text', 'integer'), ('2', 'text2', 'code', 'somet text', 'integer'), ('3', 'text3', 'code', 'somet text', 'integer'), ('4', 'text4', 'code', 'somet text', 'integer'), ('5', 'text5', 'code', 'somet text', 'integer')]] 

以上是 修改列表保持的元组 的全部内容, 来源链接: utcz.com/qa/264018.html

回到顶部