#filter用于过滤序列defis_odd(n):return n%2==1print(list(filter(is_odd,[1,2,3,4,5,6,7])))#和map()不同的是,filter()把传入的函数依次作用于每个元素# 然后根据返回值是True还是False决定保留还是丢弃该元素#map()[True, False, True, False]#filter[1,3,5,7]defnot_empty(s):return s and s.strip()#用filter()来过滤元素,如果s是None,s.strip()会报错# 但s and s.strip()不会报错list(filter(not_empty,['A','B',None,'C',' ']))#埃氏筛法#构造数列defodd_iter():
n=1whileTrue:
n=n+2yield n#生成器 无限序列defprimes():yield2
it=odd_iter()#初始序列whileTrue:
n=next(it)yield n
it=filter(not_divisible(n), it)# 构造新序列for n in primes():if n<1000:print(n)else:break#循环条件# 回数,例如 12321 利用 filter() 滤掉非回数:defis_palindrome(n):
nn =str(n)# 转成字符串return nn == nn[::-1]# 反转字符串并对比原字符串返回true/falseprint(list(filter(is_palindrome,range(1,1000))))
c
#include<stdio.h>intsumofElements(int A[],int size){int i,sum=0;for(i=0;i<size;i++){
sum=sum+A[i];}return sum;}intmain(){int A[]={1,2,3,4,5};int size=sizeof(A)/sizeof(A[0]);//4个字节5个数,20除以4 size=5 int total=sumofElements(A,size);printf("Sum of elements =%d\n",total);}
#字符数组
#include<stdio.h>#include<string.h>intmain(){char c[20];
c[0]='J';
c[1]='O';
c[2]='H';
c[3]='N';
c[4]='/0';printf("%s",c)}//字符数组作为函数参数 #include<stdio.h>intmain(){voidcopy_string(char from[],char to[]);char a[]="I am a teacher";char b[]="You are a student.";printf("string a=%s\nstring b=%s\n",a,b);printf("copy string a to string b:\n");copy_string(a,b);//字符数组名做实参 printf("\nstring a=%s\nstring b=%s\n",a,b);return0;}voidcopy_string(char from[],char to[])//形参为字符数组 {int i=0;while(from[i]!='\0'){
to[i]=from[i];i++;}
to[i]='\0';}