Python的多行输入与多行输出

因为在OJ上做编程,要求标准输入,特别是多行输入。特意查了资料,自己验证了可行性。


   
   
  1. if __name__ == "__main__":
  2. strList = []
  3. for line in sys.stdin: #当没有接受到输入结束信号就一直遍历每一行
  4. tempStr = line.split() #对字符串利用空字符进行切片
  5. strList.extend(tempStr) #把每行的字符串合成到列表

 Q1:系统如何判断输入结束?

A:按下换行键然后Ctrl+d结束。

Q2:split()的作用?

A:str.split(str="", num=string.count(str)).

      split()通过指定分隔符对字符串进行切片,并返回切片结果。

       str -- 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。

       num -- 分割次数。

Q3:为什么选择list.extend()而不是list.append(),这两者有何区别?

 A:extend()是将新对象的内容添加到列表,append()是将新对象整体添加到列表。如下图:


   
   
  1. list1 = [ 1, 2, 3]
  2. list2 = [ 4, 5, 6]
  3. list1.append(list2)

输出是:


   
   
  1. list1 = [ 1, 2, 3]
  2. list2 = [ 4, 5, 6]
  3. list1.extend(list2)

输出是:

     所以看程序的需求选择。

一、前言

      本文主要使用python 的raw_input() 函数读入多行不定长的数据,输入结束的标志就是不输入数字情况下直接回车,并填充特定的数作为二维矩阵

二、代码


 
 
  1. def get2DlistData():
  2. res = []
  3. inputLine = raw_input() #以字符串的形式读入一行
  4. #如果不为空字符串作后续读入
  5. while inputLine != '':
  6. listLine = inputLine.split( ' ') #以空格划分就是序列的形式了
  7. listLine = [int(e) for e in listLine ] #将序列里的数由字符串变为int类型
  8. res.append( listLine )
  9. inputLine = raw_input()
  10. return res
  11. def get2DMatData( inList , val ):
  12. '''
  13. 输入:inList为不等长的二维数组,val为需填充的值
  14. 输出:np.array的形式输出填补完的二维矩阵
  15. '''
  16. maxCols = 0
  17. #获得最大长度的子序列
  18. for i in range( len( inList ) ):
  19. lenI = len( inList[i] )
  20. if lenI > maxCols:
  21. maxCols= lenI
  22. #对每个子序列作填充
  23. for i in range( len( inList ) ):
  24. num = len( inList[i] )
  25. while(num <= maxCols):
  26. inList[i].append( val )
  27. num += 1
  28. return np.array( inList , dtype = np.int64 )
  29. if __name__== '__main__':
  30. inData = get2DimData()
  31. print inData
  32. print '\n'
  33. matArray = get2DMatData(inData , 0)
  34. print( matArray )

三、运行结果

      




评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值