如何遍历字符串的每个位置以获得字符串列表?

时间:2020-05-26 18:49:06

标签: python

所以我有一个长度相同的字符串列表,像这样:

list_strings=["a-a--","-ab-b","a---a","b-b-a","aab-a"]

我要执行的操作会遍历列表内字符串的每个位置,以便计算字符“-”出现在每个位置的次数。在这种情况下,例如,位置0具有1“-”,位置1具有3“-”,位置2具有1“-”,位置3具有5“-”。但是我想对包含超过100,000个字符串的文件执行此操作

到目前为止,我有:

for i in range(0,len(list_strings)):
    for j in range(0,len(list_strings[i])):
        if list_strings[i][j]=="-":
            #count how many "-"s appear in this position and maybe save it in a list?

预先感谢您的回答

3 个答案:

答案 0 :(得分:2)

list_strings=["a-a--","-ab-b","a---a","b-b-a","aab-a"]

# if every string in `list_strings` is same length:
out = [v.count('-') for v in zip(*list_strings)]
print(out)

打印:

[1, 3, 1, 5, 1]

如果某些字符串的长度不同:

from itertools import zip_longest
out = [v.count('-') for v in zip_longest(*list_strings)]

答案 1 :(得分:1)

你很好。 只需添加counter=0变量,该变量将在您的if子句为真时添加自己,并且您的列表中将有'-'个数字。

counter =0
for i in range(0,len(list_strings)):
    for j in range(0,len(list_strings[i])):
        if list_strings[i][j]=="-":
           counter = counter +1

答案 2 :(得分:0)

我不会做太多解释,所以这是开始的代码:

list_strings=["a-a--","-ab-b","a---a","b-b-a","aab-a"]

for string in list_strings:
    occurrence = 0
    check_letter = '-'
    for letter in string:
         if letter == check_letter:
             occurrence += 1
    print('string: ' + string)
    print('occurrences: ' + occurrence)
    print('\n')