列出并用于混合



我有一个脚本,我正在尝试在其中创建.html文件。 在这个.html文件中有 3 行,左行、右行、中行。 要生成的每行都需要两个参数,一个是标题,另一个是描述。

例如,我们将左行和右行元素存储在两个列表中,一个用于标题,另一个用于 desc:

rightRowTitle = ['title2','title2']
rightRowDesc = ['Desc','Desc2']
leftRowTitle = ['l1','l2']
leftRowDesc = ['l1','l2']

这是我制作的一个例子:

rightRowTitle = ['Tytul','Tytul2']
rightRowDesc = ['Desc','Desc2']
leftRowTitle = ['l1','l2']
leftRowDesc = ['l1','l2']

for title, desc in zip(rightRowTitle, rightRowDesc):
print(title,' - ', desc)
for title, desc in zip(leftRowTitle, leftRowDesc):
print(title,' + ', desc)

结果:

Tytul  -  Desc
Tytul2  -  Desc2
l1  +  l1
l2  +  l2

现在,一旦我使用函数生成行,我就希望得到这样的结果:

rightRowTitle
rightRowDesc
leftRowTitle
leftRowDesc
rightRowTitle2
rightRowDesc2

我希望它混合在一起,而不是像现在这样静态。

你可以zip两次。

rightRowTitle = ['Tytul','Tytul2']
rightRowDesc = ['Desc','Desc2']
leftRowTitle = ['l1','l2']
leftRowDesc = ['l1','l2']
[print(a) for a in zip(zip(rightRowTitle, rightRowDesc), zip(leftRowTitle, leftRowDesc))]

您将获得:

(('Tytul', 'Desc'), ('l1', 'l1'))
(('Tytul2', 'Desc2'), ('l2', 'l2'))
[None, None]

看一个更大的例子:

rightRowTitle = ['Title1Right','Title2Right', 'Title3Right', 'Title4Right', 'Title5Right']
rightRowDesc = ['Desc1Right','Desc2Right', 'Desc3Right', 'Desc4Right', 'Desc5Right']
leftRowTitle = ['Title1Left','Title2Left', 'Title3Left', 'Title4Left', 'Title5Left']
leftRowDesc = ['Desc1Left','Desc2Left', 'Desc3Left', 'Desc4Left', 'Desc5Left']
[print(a) for a in zip(zip(rightRowTitle, rightRowDesc), zip(leftRowTitle, leftRowDesc))]

您将获得:

(('Title1Right', 'Desc1Right'), ('Title1Left', 'Desc1Left'))
(('Title2Right', 'Desc2Right'), ('Title2Left', 'Desc2Left'))
(('Title3Right', 'Desc3Right'), ('Title3Left', 'Desc3Left'))
(('Title4Right', 'Desc4Right'), ('Title4Left', 'Desc4Left'))
(('Title5Right', 'Desc5Right'), ('Title5Left', 'Desc5Left'))
[None, None, None, None, None]

现在,您只需要遍历结果即可获得所需的内容! 要调用你的函数,你可以做这样的事情:

def myFun(title, description):
print("Title: " + title + ". Desc: " + description)
def myFun2(title, description):
print("TITLE: " + title + ". DESC: " + description)
pairs = [a for a in zip(zip(rightRowTitle, rightRowDesc), zip(leftRowTitle, leftRowDesc))]
pairs2 = [pair for pair in pairs]
for p in pairs2:
myFun(p[0][0], p[0][1])
myFun2(p[1][0], p[1][1])

你会得到这样的东西:

Title: Title1Right. Desc: Desc1Right
TITLE: Title1Left. DESC: Desc1Left
Title: Title2Right. Desc: Desc2Right
TITLE: Title2Left. DESC: Desc2Left
Title: Title3Right. Desc: Desc3Right
TITLE: Title3Left. DESC: Desc3Left
Title: Title4Right. Desc: Desc4Right
TITLE: Title4Left. DESC: Desc4Left
Title: Title5Right. Desc: Desc5Right
TITLE: Title5Left. DESC: Desc5Left

您只需要更改函数myFunmyFun2即可。

也许您可以将所有标题存储在一个list中,将所有描述存储在另一个list中。洗牌并一一成对。

from random import shuffle
titles = ['Tytul','Tytul2', 'l1','l2']
descriptions = ['Desc','Desc2', 'l1','l2']
shuffle(titles)
shuffle(descriptions)
for t, d in zip(titles, descriptions):
print(title + ' - ' + desc)

对不起,如果这不是你要找的,但这是我从你的问题中理解的。

你会得到这样的东西:

// shuffled lists
titles = ['l2', 'Tytul2','Tytul', 'l1']
descriptions = ['Desc', 'l2','l1', 'Desc2']
// After the print
l2 - Desc
Tytul2 - l2
Tytul - l1
l1 - Desc2

@nestor

这是我的一个条件:

if len(rightRowTitle) > len(leftRowTitle):
for title, desc in zip(rightRowTitle, rightRowDesc):
right_row(title, desc)
for title, desc in zip(leftRowTitle, leftRowDesc):
left_row(title, desc)

问题是,这不会混合,它基本上只会向我显示第一个左行,然后是右行结果。我希望这两者之间混合。

最新更新