]> Panopticon :: K&R in Python :: 2.4 文字列s1から、文字列s2中に含まれる任意の文字を除去

<< 1.24 基本的な構文エラーチェック | main | 2.6 2.7 2.8 ビット演算 >>

2.4 文字列s1から、文字列s2中に含まれる任意の文字を除去

プログラミング言語C ANSI規格準拠

2.4 in C

#include <stdio.h>

void squeeze(char s1[], char s2[]){
	int i, j, k = 0;
	for ( i = 0; s1[i] != '\0'; i++){
		for (j = 0; s2[j] != '\0'; j++){
			if (s1[i] == s2[j]) break;
		}
		if (s2[j] == '\0') s1[k++] = s1[i];
	}
	s1[k] = '\0';
}
			
int main(void){
	char x[]="fjdfskalfjda";
	char y[]="bcde";
	squeeze(x,y);
	printf("%s",x);
	
	return 0;
}

2.4 in Python

def squeeze(s1,s2):
    return ''.join([((c in s2 and [''])or [c])[0] for c in s1])

x = "abfjdksahfjdas"
y = "abcde"
print squeeze(x,y)

リストを文字のシーケンスに戻すには空列に join してやればよいのか。それにしてもこういうところでしゃれた文字列を思いつけないのが悲しいところだ。

カテゴリ

Trackback URI

http://www.panopticon.jp/mt/mt-tb.cgi/31

Trackbacks(0)

コメントする