通过Python的join方法隐式列表声明?

时间:2018-07-13 09:19:26

标签: python list join python-3.7

我是新来的,因为我刚开始编程。在尝试学习Python的基础知识时,我已经遇到了问题。希望你们中的一员能提供帮助。

我很难理解这个代码片段的工作原理。 satz 列表是在 之后引入的,上面的join方法已经使用了它,但是我没有遇到任何错误:

import random
auswahl = [["Hallo!","Guten Tag!","Moin!"],["Wie geht es Ihnen?","Wie läuft's?", "Whazz uppp?"],["Tschüß!","Auf Wiedersehen!","I'm outta here!"]]
for i in auswahl:
    print (" ".join(satz))
    counter = 0
    satz = []
    for j in i:
        satz.append((auswahl[counter][random.randint(0,2)]))
        counter = counter + 1

这是输出:

晕! Wieläuft是?我不在这里!

痛苦! Wie geht es Ihnen? Auf Wiedersehen!

Guten标签! Wie geht es Ihnen? Auf Wiedersehen!

此示例使用大致相同的设置无效:

counter = [1,2,3]
for i in counter:
    print(" ".join(test))
    test = []

NameError                                 Traceback (most recent call last)
<ipython-input-46-ba80e417be84> in <module>()
  1 counter = [1,2,3]
  2 for i in counter:
----> 3     print(" ".join(hallo))
  4     hallo = []

NameError: name 'hallo' is not defined

在其他线程中我没有发现任何帮助。也许你们其中之一可以提供帮助?提前致谢!

1 个答案:

答案 0 :(得分:-1)

如果要随机化计数器列表的顺序,则需要定义测试,如下所示:

import random
test = []
counter = [1,2,3]
for i in counter: 
    test.append(str(counter[random.randint(0,2)]))
print(" ".join(test))

除非将" ".join(satz)移至for循环的底部,否则您的第一个示例将不起作用,因为必须在连接satz之前将其定义,例如:

import random
auswahl = [["Hallo!","Guten Tag!","Moin!"],["Wie geht es Ihnen?","Wie läuft's?", "Whazz uppp?"],["Tschüß!","Auf Wiedersehen!","I'm outta here!"]]
for i in auswahl:
    counter = 0
    satz = []
    for j in i:
        satz.append((auswahl[counter][random.randint(0,2)]))
        counter = counter + 1
    print (" ".join(satz))