我在一个关于python字符串的练习中遇到了一些问题。在
我有两个不同的列表:
list1= "ABCDEFABCDEF"
以及
^{pr2}$我需要根据它们的位置比较这两个列表,所以1个字母在一起,然后2…使用最小长度(这里是列表1的长度),并根据字母的不同或相同将它们存储在一个新的变量中。在
identicals=[]
different=[]
我试着编写代码,它似乎找到了相同的代码,但对不同的代码无效,因为它复制了多次。在
for x in list1:
for y in list2:
if list1>list2:
if x==y:
identicals.append(x)
if x!=y :
different.append(x)
if list2>list1:
if y==x:
identicals.append(y)
if y!=x:
different.append(y)
我会很感激你的帮助。在
谢谢。在
编辑:输出结果应如下所示:
identicals=['A']
different=["Z","B","Y","C","X","D","W","E","V",F","A"]
问题是字母A只显示在相同的符号上,而不是不同的字母,即使是F!=A
因为有一对嵌套的
for
循环,所以list2
中的每一项都要测试list1
中的每个项。在关键思想是迭代parallel中的两个字符串。您可以使用内置的^{} function 来实现这一点,它会从您提供给它的每个iterable中生成一个对应项的元组,一旦其中一个iterable的项用完就停止。在
从示例代码来看,您似乎希望从较长的字符串中获取
different
列表的项。要有效地做到这一点,请在开始循环之前找出哪个字符串的长度比长。在我重新命名了你的字符串,因为给字符串起一个以“list”开头的名称会令人困惑。在
输出
^{pr2}$我们可以以牺牲可读性为代价使
for
循环更紧凑。我们将目的地列表放入一个元组中,然后使用相等性测试来选择要附加到该元组中的哪个列表。这是因为False
的数值为0,True
的数值为1。在问题是内环。您正在将列表1中的每个字母与列表2中的所有字母进行比较。在
相反,您应该有一个单循环:
试试这个
相关问题 更多 >
编程相关推荐