Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用嵌套循环和函数split()创建列表字母计数器?_Python_Python 3.x - Fatal编程技术网

Python 如何使用嵌套循环和函数split()创建列表字母计数器?

Python 如何使用嵌套循环和函数split()创建列表字母计数器?,python,python-3.x,Python,Python 3.x,我很难理解为什么这个程序不起作用。到目前为止,我所知道的是它是由嵌套循环或函数split()引起的 您不需要alphabet.split(),因为它会返回一个与您的需要无关的列表[“abcd”] letters = "abcd" alphabet = "aacd" counter = [] for i, l in enumerate(letters): counter.append(alphabet.count(l)) print(counter) 输出: [2, 0, 1,

我很难理解为什么这个程序不起作用。到目前为止,我所知道的是它是由嵌套循环或函数split()引起的


您不需要
alphabet.split()
,因为它会返回一个与您的需要无关的列表
[“abcd”]

letters = "abcd"
alphabet = "aacd"

counter = []

for i, l in enumerate(letters):
    counter.append(alphabet.count(l))


print(counter)
输出:

[2, 0, 1, 1]

您不需要
alphabet.split()
,因为它会返回一个与您的需要无关的列表
[“abcd”]

letters = "abcd"
alphabet = "aacd"

counter = []

for i, l in enumerate(letters):
    counter.append(alphabet.count(l))


print(counter)
输出:

[2, 0, 1, 1]

为了完整起见,这里有另一种方法:

letters = "abcdabcdabcdaz"
alphabet = "abcd"

counter = [0,0,0,0]

for letter in letters:
    try:
        counter[alphabet.index(letter)] +=1
    except ValueError:
        pass

print(counter)

.index()
将为您提供列表中所需元素的位置(或
ValueError
)。通过捕获(并忽略)异常,您可以跳过增加
字母表定义中不存在字母的计数器。

为了完整起见,这里有另一种方法:

letters = "abcdabcdabcdaz"
alphabet = "abcd"

counter = [0,0,0,0]

for letter in letters:
    try:
        counter[alphabet.index(letter)] +=1
    except ValueError:
        pass

print(counter)

.index()
将为您提供列表中所需元素的位置(或
ValueError
)。通过捕获(并忽略)异常,您可以跳过增加
字母表定义中不存在字母的计数器。

Heyo,可以尝试使用列表函数(将单词拆分为数组):

此程序输出

[1, 1, 1, 1]

嘿,也许可以试试列表功能(将单词拆分成数组):

此程序输出

[1, 1, 1, 1]

好你对
n
的使用有点错误。您最好在
字母
中获取给定字母的索引,并更新
计数器
/split方法不用于拆分单词的索引?默认情况下,它会查找空格分隔符
alphabet.split()
创建一个包含单个元素的列表,该元素不是您想要的。省去它,直接在外部
循环中使用
字母表
,用于
循环。您需要在上部循环中增加n。
[字母表.字母中e的计数]
好。。你对
n
的使用有点错误。您最好在
字母
中获取给定字母的索引,并更新
计数器
/split方法不用于拆分单词的索引?默认情况下,它会查找空格分隔符
alphabet.split()
创建一个包含单个元素的列表,该元素不是您想要的。省去它,直接在外部
循环中使用
alphabet
,用于
循环。您需要在上层循环中增加n。
[alphabet.count(e)表示字母中的e]
如果我理解正确,他希望在
计数器[0]
中计数
a
计数器[1]
中计数
b
,等等。如果
字母的出现次数超过1次,则您的示例将不起作用。是的,如果字母重复,则示例不起作用;/但我激动了一下:D@omri_saadon干杯:)我在给他写一个例子的时候,对
enumerate()
有点生疏了,我采用了
alphabet.index(字母)
方法,但是你的方法更简洁:)顺便说一句,也不要使用
n=0
,因为它不再需要了。好的,好的。。因此,建议计数器动态增长。我已经更新了答案,我想这会通过你的测试:)@Favorettii如果我理解正确,他想在
计数器[0]
中计数
a
计数器[1]
中计数
b
,等等。如果
字母的出现次数超过1次,你的例子就不起作用了。是的,如果字母重复,它就不起作用了;/但我激动了一下:D@omri_saadon干杯:)我在给他写一个例子的时候,对
enumerate()
有点生疏了,我采用了
alphabet.index(字母)
方法,但是你的方法更简洁:)顺便说一句,也不要使用
n=0
,因为它不再需要了。好的,好的。。因此,建议计数器动态增长。我已经更新了答案,我想这会通过你的测试:)@favoretithank you!:D如果我能给你的两个答案打个绿色的勾号,我会说:谢谢如果我能给你的两个答案打个绿色的勾号,我会:D