input的多人格

input()函数是python读取控制台输入的变量值,返回的是字符型,所以如果要整型int(input()),如果input()输入的是浮点型,会直接报错,要用float(input()),所以不知道会输入什么就统一用eval(input()),它会自动推断输入接收的类型然后返回

字符串可以用.split()分割返回一个列表,所以多输入的时候要规定用什么隔开,如12 13 14,就是用空格的,所以,input().split(),split()函数默认是空格,这个默认的不加什么,会碰到空格一起消掉,就是12 13 14这个会返回12,13,14的列表,而如果1. 若需要精确分割(比如只按单个空格),需显式传入split(" "),但会保留连续空格产生的空字符串。

所以a=input().split(),这里的a就是返回的字符列表,那要转型怎么办,可以用列表推导式或则for循环,列表推导式b=[int(n) for n in a]
列表推导式讲解

[表达式 for 变量 in 可迭代对象]
  • 表达式:对每个变量要执行的操作(比如计算、拼接、类型转换等);
  • for 变量 in 可迭代对象:遍历可迭代对象(列表、字符串、range、字典等)的每一个元素;
  • 整体用[]包裹,最终生成一个新列表。
    带条件判断的列表推导式(进阶)
[表达式 for 变量 in 可迭代对象 if 条件]

列表推导式支持添加if条件,只保留满足条件的元素

带多循环 / 多条件的列表推导式(高阶)

# 等价于两层for循环 list1 = [1, 2, 3] list2 = ['a', 'b'] combinations = [(x, y) for x in list1 for y in list2] print(combinations) # 输出: [(1, 'a'), (1, 'b'), (2, 'a'), (2, 'b'), (3, 'a'), (3, 'b')]

类比for x in list1:
for y in list 2:
combinations.append((x,y));

fiter(function,class)函数,是对class迭代对象元素进行function,如果是true就存起来,然后返回一个列表,function可以是自己定义的一个函数,也可以是lambda匿名函数